EXIST 和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);
总结:一般使用的场景是 IN适合主表大子表小,EXIST适合主表小子表大