当前位置:网站首页>exist和in的区别

exist和in的区别

2022-08-11 11:00:00 小百菜

 这里简单的给自己做个记录:

    exist和in的区别:

  select    *      from   a     where    id    in  (select  id  from  b) ;    

  select    *      from   a     where    id    exists  (select  id  from  b) ;    

对于这样的sql查询同一个库,结果是一样的,但是查询速度对于不同情况,差别较大;

使用in ,sql语句是先执行子查询,也就是先查询b表,在查a表;

而使用exists是先查主表a ,再查字表b。

in是子查询为驱动表,外面的表为被驱动表,故适用于子查询结果集小而外面的表结果集大的情况。
exists是外面的表位驱动表,子查询里面的表为被驱动表,故适用于外面的表结果集小而子查询结果集大的情况。

对于主表数据较多时,我们使用in速度比exist更快,反之,从表b较大时,使用exist插叙速度更快(都会使用索引);

如果使用的是not in与not exists,直接使用not exists,因为not in 会进行全表扫描不走索引,not exists会走索引。 

————————————————
版权声明:本文为CSDN博主「小擦鸟飞翔天」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33652147/article/details/92734987

原网站

版权声明
本文为[小百菜]所创,转载请带上原文链接,感谢
https://blog.csdn.net/u014644574/article/details/126244778