Mysql中 in和exist函数区别

本文探讨了在MySQL中,根据外部表(A表)和子查询数据量的不同,如何选择使用IN或EXISTS。当A表数据量大时,推荐使用IN配合外表索引;反之,数据量小时,使用EXISTS更优,因为它避免了外表索引的缺陷。IN相当于多个OR条件的组合,而EXISTS则是通过循环比较条件来判断。了解这两者的区别有助于提升SQL查询性能。
摘要由CSDN通过智能技术生成

1.in查询的子条件返回结果必须只有一个字段,例如:

select * from student where name in (select name from user)

exist查询的子条件返回结果可以有多列,例子:

select * from student where name exist (select name,age from user)

当A表数据(外表)大于子查询数据得时候 建议用 in。 外表索引占主要作用                                             

select  * from A where  name in (select name from user)

当A表数据(外表)小于子查询数据得时候,建议用 exist。弥补外表索引缺陷问题。

select  * from A where  name in (select name, age from user)

因为:in 相当于SQL中得多个or 条件去匹配   ,exist是for 循环得形式 去比较条件。如果匹配上,条件成立则执行。

受启发链接:MySQL中In与Exists的区别_Lzc的博客-CSDN博客_mysql中in和exists的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值