SQL IN 与 =:性能差异
概述:
SQL IN
运算符检查指定列表中是否存在某个值。 但是,与 IN
运算符相比,使用 =
时性能可能会受到显着影响,尤其是在某些情况下。
问题:
特定的 SQL 查询证明使用 IN
和 =
之间存在显着的性能差异,即使 IN
仅比较单个值也是如此。
根本原因:
性能瓶颈源于MySQL优化缺陷。 MySQL 错误地将 IN
子句中的子查询分类为 依赖 子查询,而不是 独立 子查询。
依赖子查询与独立子查询:
这种错误分类非常严重。依赖子查询对外部查询中的每一行重复执行,这极大地影响了性能。 另一方面,独立子查询仅执行一次,并且其结果被缓存以提高效率。
简化分析:
原始查询的简化版本复制了性能问题,确认 IN
子句的子查询被视为依赖项,导致执行速度变慢。
解决方案:
MySQL 将子查询类型错误识别为依赖型是使用 IN
时性能下降的根源。 此问题在 MySQL 5.6.x 及更高版本中已得到解决。
以上是为什么比较单个值时我的 SQL IN 条件比'=”慢?的详细内容。更多信息请关注PHP中文网其他相关文章!