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

MySQL查询优化器使用多种不同的策略来评估子查询:

  • 对于使用IN,= ANY,或EXISTS的子查询,优化器有以下选项:
    • 半连接
    • 物化
    • EXISTS策略
  • 对于使用NOT IN,<> ALL或NOT EXISTS的子查询,优化器有以下选择:
    • 物化
    • EXISTS策略 对于派生表,优化器有以下选择(这也适用于视图引用和普通表表达式):
  • 将派生表合并到外部查询中
  • 将派生表转换为内部临时表 下面将详细介绍上面这些优化策略。
对使用子查询来修改单表的UPDATE语句和DELETE语句来说,优化器不会使用半连接和物化子查询优化。作为变通,尝试将其重写为使用连接的语句,而非使用子查询的语句。