使用not in 如果子查询中返回的任意一条记录包含空值,则查询不返回任何记录,而且not in 会对内外表进行全表扫描,没有用到索引。而not exists子查询仍然会用到索引,所以无论那个表大,not exists都会比not in 快。另外,如果子查询表大适合用exists,表小适合用in。并且MySQL官方文档有说明,in关键字适合确定数量的情况,一般效率较低,不推荐使用。能用in关键字的语句都可以转化为使用join的语句。
在使用not in查询时,建议使用exists或join方式
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 如果要实现一张表有而另外一张表没有的数据时,我们通常会这么写:SELECT id FROM user WHERE ...
- 参考SQL查询中in、exists、not in、not exists的用法与区别 1、in和exists in是...
- 在一些业务场景中,会使用NOT EXISTS语句确保返回数据不存在于特定集合,部分同事会发现NOT EXISTS有...
- 关于MySQL[https://mp.weixin.qq.com/s?__biz=Mzk0NzAzNTM0Mg==...