MySQL 优化:优化 SQL 语句:优化子查询,派生表和视图引用

来自Wikioe
Eijux讨论 | 贡献2021年4月26日 (一) 10:35的版本 (建立内容为“category:MySQL == 关于 == MySQL 查询优化器有多种策略可用于评估子查询: # 对于'''IN'''(或=ANY)子查询,优化器具有以下选…”的新页面)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索


关于

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

  1. 对于IN(或=ANY)子查询,优化器具有以下选择:
    1. 半连接
    2. 实体化
    3. EXISTS策略
  2. 对于NOT IN(或<>ALL)子查询,优化器具有以下选择:
    1. 实体化
    2. EXISTS 策略
  3. 对于派生表,优化器具有以下选择(这也适用于视图引用):
    1. 将派生表合并到外部查询块中
    2. 将派生表实体化为内部临时表


  • 使用子查询修改单个表的“UPDATE”和“DELETE”语句的局限性在于,优化器不使用半联接或物化子查询优化。解决方法是,尝试将它们重写为使用联接而不是子查询的多表“UPDATE”和“DELETE”语句。

使用半联接转换优化子查询,派生表和视图引用

通过实体化来优化子查询

使用EXISTS策略优化子查询

通过合并实体化来优化派生表和视图引用