mysql中 并不是exists一定比in效率快

本文探讨了SQL查询中IN与EXISTS关键字的使用效率问题,指出IN适用于外表大内表小的情况,而EXISTS则适合外表小内表大的场景,并通过具体例子说明了两种情况下如何选择合适的语法以提高查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、关于exists和in的效率问题:
分场景:

1.此场景适应A表数据量大于B表,且where后的字段加了索引。这种情况用in效率高的原因是利用了大表的索引。
  select * from ecs_goods A where A.cat_id in(select cat_id from ecs_category B);
  -------------------------------------------------------------------------------
2.此场景适应B表数据量大于A表,且where后的字段加了索引。这种情况用exists效率高的原因是利用了大表的索引。
  select * from ecs_goods a where EXISTS(select cat_id from
    ecs_category b where a.cat_id = b.cat_id);

总结:IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值