当前位置:   article > 正文

Exists与in的区别(简介)_exists和in 的结果不一样

exists和in 的结果不一样

适用范围:

  1. in适用于子查询得出结果集少,主查询表大又有索引的情况
  2. exists适用于子查询表大又有索引的情况
  3. 在数据量小的情况下,in与exists执行效率几乎无区别

功能区别:

  1. in是做等值匹配,子查询返回必须与外部查询条件一致。例如外部查询判断是id,子查询返回必须为id; 示例:select * from table1 where id in (select id from table2);
  2. exists是通过子查询结果做判断,只要子查询有结果返回则成立。返回什么数值无所谓返回null值也可以;示例:select * from table1 t1 where 1=1 and  exists (select 1 from table2 t2 where t1.id = t2.id);
  3. in不会对NULL值做处理,如果子查询返回结果中有NULL值会对结果有影响。如果查询结果中可能有NULL值则不要用in

原理区别:

  1. in是先查询子查询的表,将子表和主表做一个笛卡尔积然后按条件进行筛选
  2. exists是以主表为驱动,主表先被访问。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/479932
推荐阅读
  

闽ICP备14008679号