exist mysql,MYSQL – IN和EXIST之间的区别

在MySql中进行子查询时,[NOT] IN和[NOT] EXIST之间有什么区别.

解决方法:

EXISTS

字面上的EXISTS用于检查是否存在指定的标准.在当前的标准SQL中,它允许您指定多个标准进行比较 – IE如果您想知道col_a和col_b何时匹配 – 这使得它比IN子句强一点. MySQL IN支持元组,但语法不可移植,因此EXISTS是可读性和可移植性的更好选择.

另外要注意的是EXISTS是如何操作的 – EXISTS返回一个布尔值,并在第一次匹配时返回一个布尔值.因此,如果您正在处理重复/倍数,EXISTS将比IN或JOIN更快地执行,具体取决于数据和需求.

IN是OR子句的语法糖.虽然它非常适应,但是在处理这种比较的许多值时存在问题(在1000之下).

NOT运算符只是反转逻辑.

子查询与JOIN

“总是使用连接”的口头禅是有缺陷的,因为如果父项有多个子记录,JOIN可能会使结果集膨胀.是的,你可以使用DISTINCT或GROUP BY来处理这个问题,但这很可能会带来使用JOIN的性能优势.了解您的数据以及您对结果集的要求 – 这些是编写性能良好的SQL的关键.

重申知道何时以及为什么要知道使用什么 – 如果比较的列不可为空,则LEFT JOIN IS NULL是MySQL上最快的排除列表,否则NOT IN / NOT EXISTS是更好的选择.

参考:

标签:sql,mysql,database,exists

来源: https://codeday.me/bug/20190926/1818492.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值