mysql中in和exists有什么区别
程序员文章站
2022-03-25 09:17:56
...
mysql中exists和in的区别有:1、in是把外表和内表做hash连接,先查询内表;2、exists是对外表做loop循环,循环后在对内表查询;3、在外表大的时用in效率更快,内表大用exists更快。
mysql中exists和in的区别有:
#对B查询涉及id,使用索引,故B表效率高,可用大表 -->外小内大 select * from A where exists (select * from B where A.id=B.id);
#对A查询涉及id,使用索引,故A表效率高,可用大表 -->外大内小 select * from A where A.id in (select id from B);
(1)exists是对外表做loop循环,每次loop循环再对内表(子查询)进行查询,那么因为对内表的查询使用的索引(内表效率高,故可用大表),而外表有多大都需要遍历,不可避免(尽量用小表),故内表大的使用exists,可加快效率;
(2)in是把外表和内表做hash连接,先查询内表,再把内表结果与外表匹配,对外表使用索引(外表效率高,可用大表),而内表多大都需要查询,不可避免,故外表大的使用in,可加快效率。
(3)如果查询的两个表大小相当,那么用in和exists差别不大。如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in。
以上就是mysql中in和exists有什么区别的详细内容,更多请关注其它相关文章!
下一篇: php实现持久层的方法
推荐阅读
-
天之蓝多少钱一瓶,天之蓝和海之蓝有什么区别!
-
小米电视4a质量怎么样(小米电视4a和4c有什么区别)
-
2020年抖音发财中国年的金卡和钻卡有什么区别 分别是什么意思
-
Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini及服务无法启动的快速解决办法(问题小结)
-
unity3d中四种光源有什么区别?
-
网易163邮箱和126邮箱有什么区别?
-
大数据在托管和SEO中的作用有哪些?
-
火山小视频和火山极速版有什么区别 火山小视频对比火山极速版
-
SQL查询中in和exists的区别分析
-
Win10 build 10547中Edge浏览器版本号有两个 分别用于浏览器和渲染引擎