1、select * from user where exists (select 1);
2、用户表的记录被逐个取出,因为子查询中的select 1总是可以返回记录行。
(相关资料图)
3、那么user表中的所有记录都会添加到结果集中,所以和select * from user是一样的;是一样的。
4、There is no existence, as opposed to existence,
5、一般来说,如果表A有n条记录,那么exists查询就是把这n条记录一条一条拿出来。
6、然后判断N次存在条件。
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 where exists(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 where exists (select cc from a where cc=b.cc) is inefficient, which uses the index of replicated copy columns on table A.
18、Absence and nonexistence
19、如果是草绘,则不使用索引;
20、not extsts的子查询仍然可以使用表上的索引。
本文到此结束,希望对大家有所帮助。
本文由用户上传,如有侵权请联系删除!关键词: