mysql什么时候用in,什么时候用exists

写在前面

网上看帖子的时候,经常会看到说尽量用exists,少用in。

那么问题来了,是所有场景下都尽量用exists吗,还是具体场景具体分析。

给你答案

mysql做子查询的时候,永远记得要小表驱动大表

in

select * from A where id in (select id from B);

相当于先循环B,再循环A。B表驱动A表。

也就是当B表数据少于A表时,用in最佳。

exists

select * from A where exists (select 1 from B where B.id=A.id);

相当于先循环A,再循环B。A表驱动B表。

也就是当A表数据少于B表时,用exists最佳。

结论

其实in和exists都有其存在的必要性,虽然有时候用起来含义一样,但是其效率是不一样的,也不存在哪一个最好哪一个最差。

根据实际情况来判断使用哪种方式


转自:https://blog.csdn.net/A_art_xiang/article/details/114588321

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值