Subquery Optimizations Map

以下是显示SQL语言中允许的所有类型的子查询的映射,以及可用于处理它们的优化程序策略。

  • 无色区域表示不同种类的子查询,例如:

    • from x IN (select xx)
    • from () xxx
    • ...
  • 每个未着色区域的大小大致对应于该种子查询的重要性(即经常使用)的大小。 例如,x IN(SELECT ...)查询是最重要的,而EXISTS(SELECT ...)是相对不重要的
  • 彩色区域表示应用于处理各种子查询的优化/执行策略。
  • 底部的颜色表示它可用的是哪个版本的MySQL / MariaDB(请参阅下面的图例)
    Subquery Optimizations Map

在进行优化时,MariaDB不会评估昂贵的子查询(这意味着,EXPLAIN总是很快)。 MySQL 5.6在这方面取得了一些进展,但其优化器仍然会评估某些种类的子查询(例如,用于范围谓词的标量上下文子查询)

上一篇:mysql8.0窗口函数:rank,dense_rank,row_number 使用上的区别


下一篇:MySQL 子查询优化[IN/EXISTS]--smei join