当前位置: 首页 > 面试题库 >

MYSQL-IN和EXIST之间的区别

逑兴安
2023-03-14
问题内容

MySql的问题:

在MySql中执行子查询时,[NOT] IN和[NOT] EXIST有什么区别?


问题答案:

存在

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

使用EXISTS需要注意的另一件事是它的工作方式-
EXISTS返回一个布尔值,并且在第一个匹配项时将返回一个布尔值。因此,如果要处理重复项/重复项,则根据数据和需求,EXISTS的执行速度将比IN或JOIN更快。

IN是OR子句的语法糖。尽管非常适应,但在处理该比较的许多值时(超过1000)存在问题。

NOT运算符只是反转逻辑

子查询与联接

“始终使用联接”的口号是有缺陷的,因为如果有多个子记录与父记录不对,则JOIN冒着夸大结果集的风险。是的,您可以使用DISTINCT或GROUP
BY来处理此问题,但是很有可能这会带来使用JOIN模拟辩论的性能优势。了解您的数据以及结果集的要求-这些是编写性能良好的SQL的关键。

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

参考:

  • MySQL:可空列上的LEFT JOIN / IS NULL,NOT IN,NOT EXISTS不存在
  • MySQL:LEFT JOIN / IS NULL,NOT IN,NOT可空列上不存在


 类似资料:
  • 本文向大家介绍MySQL和MongoDB之间的区别,包括了MySQL和MongoDB之间的区别的使用技巧和注意事项,需要的朋友参考一下 MySQL是一个关系数据库。MongoDB是NoSQL数据库。 以下是MySQL和MongoDB之间的重要区别。 序号 键 的MySQL MongoDB 1 拥有/开发 MySQL由Oracle拥有。 MongoDB由MongoDB Inc.开发。 2 数据存储

  • 问题内容: 以下两个命令有什么区别? 和 哪一个更快?如果是另一种类型,会有所不同吗? 问题答案: 它们在语义上是相同的。 只是第二个示例中一串相等语句的简写形式。性能也应该相同。 类型无关紧要,它将始终计算为一串相等的字符串。 但是,使用和数据可能有所不同,a的比较结果不会为false ,因此您可能会得到结果集中未曾期望的行。 举个例子: 上面的查询将不会返回一行,即使在面值既不或者-这是因为是

  • 问题内容: 之间有什么区别 和 问题答案: 可以执行通配符匹配: 如果不需要模式匹配,请使用=代替LIKE。它更快,更安全。(您正在使用参数化查询,对吗?)

  • 本文向大家介绍MySQL和SQL Server之间的区别,包括了MySQL和SQL Server之间的区别的使用技巧和注意事项,需要的朋友参考一下 MySQL和SQL Server都是关系数据库管理系统或RDBMS。MySQL是开源的,可以免费使用,而SQL Server是Microsoft的许可产品。 以下是MySQL和SQL Server之间的重要区别。 序号 键 的MySQL SQL服务器

  • 问题内容: 这个问题已经在这里有了答案 : MySQL中的VARCHAR vs TEXT (3个答案) 3个月前关闭。 当我们在MySQL中创建带有列的表时,我们必须为其设置长度。但是对于类型,我们不必提供长度。 和之间有什么区别? 问题答案: TL; DR 固定的最大大小为65535个字符(您不能限制最大大小) 占用2 + 字节的磁盘空间,其中是存储的字符串的长度。 不能(完全)成为索引的一部分

  • 问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子: