正确使用EXISTS和IN
如何正确使用EXISTS和IN
当两张表关联查询时,要使用一张数据小的表关联数据大的表时,使用EXISTS关键字,即:
select * from tableA a EXISTS (select 1 from tableB b where b.id = a.id)
要使用一张数据大的表关联数据小的表时,使用IN关键字,即:
select * from tableA a where a.id IN (select b.id from tableB b)
经过实测,查询速度比上面反过来查询的速度高出很多倍
这是通过大表关联小表,使用in,查询时间是1.14s
当我查上述表的时候,使用EXISTS ,查询效果如下:
这是通过大表关联小表,使用EXISTS,查询时间是1772.023s
我之前看过一篇关于EXISTS和IN的区别的文章,写的很好,不妨切出来,碰到这类问题的或者学习mysql的老铁,可以参考借鉴!SQL中IN和EXISTS用法的区别