query-path.zh.md 1.5 KB
Newer Older
李少辉-开发者's avatar
李少辉-开发者 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
## 51.1.查询的路径

这里,我们简要概述了查询获得结果所必须经过的阶段。

1.  必须建立从应用程序到PostgreSQL server的连接。应用程序向服务器发送查询,并等待接收服务器返回的结果。

2.  这个*分析阶段*检查应用程序传输的查询的语法是否正确,并创建*查询树*.

3.  这个*重写系统*获取由解析器阶段创建的查询树,并查找*规则*(存储在*系统型录*)以应用于查询树。它执行*规则机构*.

    重写系统的一个应用是实现*意见*.每当对视图(即*虚拟表*)则重写系统将用户的查询重写为访问*基表*在*视图定义*反而。

4.*计划者/优化者*获取(重写的)查询树并创建一个*查询计划*这将是*执行人*.

    它首先创建所有可能的*路径*导致相同的结果。例如,如果要扫描的关系上有索引,则扫描有两条路径。一种可能是简单的顺序扫描,另一种可能是使用索引。接下来估计每条路径的执行成本并选择最便宜的路径。最便宜的路径被扩展为执行者可以使用的完整计划。

5.  执行者递归地遍历*计划树*并以计划表示的方式检索行。执行人利用*存储系统*在扫描关系时,执行*排序**加入*, 评估*资格*最后交还派生的行。

    在接下来的部分中,我们将更详细地介绍上面列出的每个项目,以便更好地理解 PostgreSQL 的内部控制和数据结构。