mysql关联查询sql优化

正确使用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)

经过实测,查询速度比上面反过来查询的速度高出很多倍
select * from tableA a where a.id IN (select b.id from tableB b)
这是通过大表关联小表,使用in,查询时间是1.14s

当我查上述表的时候,使用EXISTS ,查询效果如下:

select * from tableA a EXISTS (select 1 from tableB b where b.id = a.id)
这是通过大表关联小表,使用EXISTS,查询时间是1772.023s

我之前看过一篇关于EXISTS和IN的区别的文章,写的很好,不妨切出来,碰到这类问题的或者学习mysql的老铁,可以参考借鉴!SQL中IN和EXISTS用法的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值