Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Optimizing Subqueries, Derived Tables, View References, and Common Table Expressions

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

MySQL 查询优化器有多种策略可用于评估子查询:

  • 对于使用 IN= ANYEXISTS 谓词的子查询,优化器有以下选择:

    • 半连接

    • 物化

    • EXISTS 策略

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

    • 物化

    • EXISTS 策略

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

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

  • 将派生表物化到内部临时表中

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

Note

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