第十章-生成执行计划
本章详细介绍了PostgreSQL查询优化器的最后一步:将最优执行路径(Path)转换为可执行的执行计划(Plan)。主要内容包括转换流程(扫描计划和连接计划的生成)以及执行计划树的清理优化。
第九章-NonSPJ优化
本章介绍 PostgreSQL 查询优化器中 Non-SPJ(非Select-Project-Join)操作 的优化过程。Non-SPJ优化主要包括:
第八章-连接路径
本章详细讲解了PostgreSQL查询优化器中物理连接路径的完整建立过程,包括连接合法性检查、三种经典连接方法(NestloopJoin、HashJoin、MergeJoin)的路径生成与代价计算,以及路径的预筛选与最终筛选机制。
第六章-扫描路径
本章详细介绍了PostgreSQL查询优化器中扫描路径的生成机制,包括代价模型、路径结构、以及顺序扫描/索引扫描/位图扫描三种核心扫描方式的实现原理。
第四章-逻辑分解优化
本章是逻辑优化的核心章节,承接逻辑重写优化,开启物理优化的准备工作。主要内容是将查询树中的逻辑结构转换为适合物理优化的数据结构,并进行谓词下推、等价类推理、连接顺序优化等关键操作。
第三章-逻辑重写优化
本章分析 PostgreSQL 查询优化器中的逻辑重写优化阶段。逻辑重写优化是在查询树上进行等价变换,改造后仍然是一棵查询树(与后续的逻辑分解优化不同,后者会将查询树打散重建)。
第一章-概述
本章是查询优化器的基础章节,介绍了SQL查询语句在经过词法分析、语法分析和语义分析后形成的查询树(Query Tree)。查询树对应一个关系代数表达式,是查询优化器的输入,贯穿整个查询优化过程。