mysql中in和exist的区别

本文探讨MySQL数据库中IN和EXISTS两个查询操作符的使用区别。IN通常用于子查询返回集合较小的情况,它将子查询的结果与外部查询的条件进行匹配。而EXISTS则更关注子查询是否返回至少一行数据,适用于子查询返回结果集较大的场景,它的性能往往优于IN。理解并正确选择使用IN和EXISTS,能够优化SQL查询效率。
摘要由CSDN通过智能技术生成
mysql中in和exists的区别

-- in写法
select * from A where A.id in (select bid from  B ) and A.name in (select bname from  B ) ;

-- exits写法
select * from A where  EXISTS (select 1 from  B.bid = A.id );
 
  • 区别1
    当B表的数据远大于A表的数据 exits的效率更高(B表大,用exits)
    当B表的数据远小于A表的数据 in的效率更高(B表小,用in)
    当B表的数据和A表的数据差不多 in/exits效率基本一致
 
  • 区别2
    --  如果关联的字段是多个的时候用exits效率更高,可以减少B表的查询次数,提高效率

    --例子:除了通过id,还需要name字段来进行关联

    -- 使用in来完成会查询B表多次,效率低
    select * from A where A.id in (select bid from  B ) and A.name in (select bname from  B ) ;

    -- 使用existis来完成,可以减少B表的查询次数,提高效率
    select * from A where  EXISTS (select 1 from  B.bid = A.id and B.bname = A.name )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值