exist和in

2021-01-02  本文已影响0人  奔跑之咸鱼

A:select 字段 from a where id in (select id from b)

B:select 字段 from a where id exist (select id from b)

这两条SQL语句看上去差别不大,数据量一大了,效率的差距还是很明显的

两条SQL出现这个差距的主要原因还是执行顺序不同,A先执行子查询再执行主表查询,而B正好相反先查询主表再查询子查询。用小表来驱动大表,简单来说让先执行的表是小表就可以了

所以我们得到的结论就是 b是小表,a是大表可以用in;a是小表,b是大表可以用exist。需要注意的是如果遇到了not in和not exist的直接用not exist,因为not in不走索引,其实走不走索引也要看mysql版本,不同版本情况不一样

上一篇 下一篇

猜你喜欢

热点阅读