基础
EXISTS 和 IN 有什么区别?
EXISTS
- 先对外表进行循环查询,再将查询结果放入EXISTS
的子查询中进行条件比较,确定外层查询数据是否保留;IN
- 先查询内表,将内表的查询结果作为条件,提供给外表查询语句进行比较;
索引是个前提,其实选择与否还是要看表的大小。你可以将选择的标准理解为小表驱动大表。在这种方式下效率是最高的。
比如下面这样:
SELECT * FROM A WHERE cc IN (SELECT cc FROM B)
SELECT * FROM A WHERE EXISTS (SELECT cc FROM B WHERE B.cc=A.cc)
2020年9月12日大约 53 分钟