标签:效果 strong 重要 判断 可靠 href lock 相关 掌握
背景:总结mysql相关的知识点。
如果A表有n条记录,那么exists查询就是将这n条记录逐条取出,然后判断n遍exists条件。
select * from user where exists select * from user); #等价于 select * from user where exists (select 1);
in查询就是先将子查询条件的记录全都查出来,假设结果集为B,共有m条记录,然后再将子查询条件的结果集分解成m个,再进行m次查询。
select * from user where user_id in (1, 2, 3); #等效于 select * from user where user_id = 1 or user_id = 2 or user_id = 3;
因为索引,in主要用到了外表的索引,exist用的是子查询的索引
5.5以后的MySQL版本在exists匹配查询结果时使用的是Block Nested-Loop(Block嵌套循环,引入join buffer,类似于缓存功能)开始对查询效率产生显著影响,尤其针对<font color=red>子查询结果集很大</font>的情况下能显著改善查询匹配效率:
通过以上分析,很容易得出下面的结论:
标签:效果 strong 重要 判断 可靠 href lock 相关 掌握
原文地址:https://www.cnblogs.com/lixuwu/p/10674714.html