2021SC@SDUSC
目录
概述
我负责的PostgreSQL代码部分:查询的编译与执行
此篇博客的分析内容:查询优化——生成路径
查询优化的整个过程可以分为预处理,生成路径和生成计划三个阶段。在上一篇博客中,我分析了查询优化的第一个阶段——预处理。这篇博客分析查询优化的第二个阶段——生成路径。在关系数据库中和非关系数据库对比,最大的特色是支持表的连接。但是表的连接结果会因连接顺序的不同而不同,所以同一组表的连接结果可能有多个。表的连接在逻辑上,我们可以看做是一棵连接树,每一棵连接树在PostgreSQL中都被称作是一条路径。因为同一组表的连接结果会有多条路径,所以查询优化的工作是:从一系列等效路径中选取效率最高的路径并形成执行计划
query_planner函数
生成路径的工作是由query_planner函数来完成的。为一个基本的查询(可能涉及连接)生成访问路径
query_planner函数执行流程