当前位置: 首页 > article >正文

SQL面试题——in和not in 不支持怎么办

in和not in 不支持怎么办

这是来自读者群的一位同学的问题,说是别人问他in和not in 不支持怎么办,现在我们来看一下这个问题

in 不支持

其实很多朋友都能写出这样的SQL,其实这个SQL 在没有底层优化的时候还是很可怕的

SELECT 
	a.key, a.value
FROM a
WHERE 
	a.key in
(SELECT b.key FROM b);

我们分析一下,这里有两种情况,其实那种都是不可取的

  1. 查询a 表的每一条记录,b 表都得进行一次查询
  2. b 表的所有记录都得一次性扫描出来,存在内存中

其实这也就是为什么早期一些查询引擎不支持的原因,其实这个问题很好解决,我们替换成join 就可以了

SELECT 
	a.key, a.value
FROM 
	a 
LEFT  JOIN 
	b 
ON 
	a.key = b.key
WHERE b.key is not  NULL;

其实这个我们可以更简单点

SELECT 
	a.key, a.value
FROM 
	a 
inner  JOIN 
	b 
ON 
	a.key = b.key

not


http://www.kler.cn/a/414062.html

相关文章:

  • MySQL 启动失败问题分析与解决方案:`mysqld.service failed to run ‘start-pre‘ task`
  • 【PyTorch】(基础一)----pytorch环境搭建
  • Linux入门攻坚——39、Nginx入门
  • 【组件封装】uniapp vue3 封装一个自定义下拉刷新组件pullRefresh,带刷新时间和加载动画教程
  • VMware ubuntu创建共享文件夹与Windows互传文件
  • 带有悬浮窗功能的Android应用
  • 深度学习day6- 损失函数和BP算法1
  • 【从零开始的LeetCode-算法】3304. 找出第 K 个字符 I
  • 分层架构 IM 系统之 Entry 设计实现
  • 跨境电商搭建知识库能带来什么效益?
  • 栈和队列——考研笔记
  • 【论文复现】BERT论文解读及情感分类实战
  • 页面内容下载为pdf
  • 2、Three.js初步认识场景Scene、相机Camera、渲染器Renderer三要素
  • k8s网络服务
  • 【数据仓库 | Data Warehouse】数据仓库的四大特性
  • 为什么redis用跳表不用b+树,而mysql用b+树而不是跳表?
  • CTF之密码学(埃特巴什码 )
  • (0基础保姆教程)-JavaEE开课啦!--12课程(Spring MVC注解 + Vue2.0 + Mybatis)-实验10
  • Python 删除Word中的表格
  • Qt中CMakeLists.txt解释大全
  • Django Admin与Vue前后端分离开发实战教程
  • open-instruct - 训练开放式指令跟随语言模型
  • Docker部署MinIO与Python的结合:探索对象存储的新境界
  • 【AIGC】大模型面试高频考点-RAG中Embedding模型选型
  • 算法训练营day17(二叉树04:平衡二叉树,所有路径,左叶子和)