Documentation Home
MySQL 8.0 参考手册  / 第8章优化  / 8.2 优化SQL语句  /  8.2.2 优化子查询、派生表、视图引用和公用表表达式

8.2.2 优化子查询、派生表、视图引用和公用表表达式

MySQL 查询优化器有不同的策略可用于评估子查询:

  • 对于与 、 或谓词一起使用的子查询IN= ANY优化EXISTS 器有以下选择:

    • 半连接

    • 实体化

    • EXISTS战略

  • 对于与NOT IN, <> ALLNOT EXISTS谓词一起使用的子查询,优化器有以下选择:

    • 实体化

    • EXISTS战略

对于派生表,优化器有以下选择(也适用于视图引用和公用表表达式):

  • 将派生表合并到外部查询块中

  • 将派生表具体化为内部临时表

以下讨论提供了有关上述优化策略的更多信息。

笔记

使用子查询修改单个表的UPDATE和 语句 的一个限制是优化器不使用半连接或物化子查询优化。DELETE作为解决方法,尝试将它们重写为 使用连接而不是子查询的 多表UPDATE和 语句。DELETE