码迷,mamicode.com
首页 > 其他好文 > 详细

in和exists比较

时间:2019-08-20 01:31:59      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:大小   索引   loop   sele   http   html   效率   span   style   

in是把外表和内表作hash 连接,而exists 是对外表作loop 循环,每次loop 循环再对内表进行查询。

一直以来认为exists 比in 效率高的说法是不准确的。如果查询的两个表大小相当,那么用in 和exists 差别不大。

如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:

例如:

表A(小表),表B(大表)1:

 select * from A where cc in (select cc from B)

效率低,用到了A 表上cc 列的索引;

 select * from A where exists(select cc from B where cc=A.cc)

效率高,用到了B 表上cc 列的索引。

相反的2:

select * from B where cc in (select cc from A)

效率高,用到了B 表上cc 列的索引;

select * from B where exists(select cc from A where cc=B.cc)

效率低,用到了A 表上cc 列的索引。

转载:https://www.cnblogs.com/weifeng123/p/9530758.html

in和exists比较

标签:大小   索引   loop   sele   http   html   效率   span   style   

原文地址:https://www.cnblogs.com/aimevous/p/11380471.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!