更新时间:2023-11-07 19:20:52
你们好,最近小艾特发现有诸多的小伙伴们对于exists和in的区别,exists这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、 select * from user whereexists (select 1);
2、 用户表的记录被逐个取出,因为子查询中的select 1总是可以返回记录行。
3、 那么user表中的所有记录都会添加到结果集中,所以和select * from user是一样的;是一样的。
4、 不是exists是exists的反义词。
5、 一般来说,如果表A中有n条记录,那么exists查询就是把这n条记录一条一条拿出来。
6、 然后判断n次exists条件。
7、 如果两个表中的一个小,另一个大,则子查询表大exists,子查询表小:in:
8、 例如:表A(小表)和表B(大表)
9、 1:
10、 select * from A where cc in(select cc from B)效率低,
11、 使用表a上cc列的索引;
12、 select * from A whereexists(select cc from B where cc=A . cc)效率高,
13、 使用表b上cc列的索引。
14、 2:
15、 select * from B where cc in(select cc from A)效率高,
16、 使用表b上cc列的索引;
17、 Select * from b whereexists (select cc from a where cc=b.cc) is inefficient, which uses the index of replicated copy columns on table A.
18、 Not in and notexists
19、 如果是草绘,则不使用索引;
20、 not extsts的子查询仍然可以使用表上的索引。
以上就是exists这篇文章的一些介绍,希望对大家有所帮助。