40.1. The Query Tree

Posted 丹心明月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了40.1. The Query Tree相关的知识,希望对你有一定的参考价值。

40.1 查询树

知道规则系统何时被调用及其输入输出对理解规则系统工作原理至关重要。

 

规则系统位于解析器和计划器之间。它使用解析器的输出(查询树)和用户定义重写规则(也是一种带有额外信息的查询树)作为输入,输出0或多个查询树。

 

何为查询树(query tree)呢?它是SQL语句的内部表示形式,其中构建它的单个部分是分开存储的。如果设置了debug_print_parse,debug_print_rewritten或debug_print_plan,则这些查询树可在数据库服务日志中看到。规则行为也在系统视图pg_rewrite中以查询树形式存储。虽然未像日志输出那样格式化,但信息是一样的。

 

在阅读查询树的SQL表示时,需要首先理解查询树结构中拆分语句的各个部分。查询树的部分有:

命令类型

    是哪个命令(SELECT,INSERT,UPDATE,DELETE)生成的查询树。

范围表

    范围表是查询中使用的对象列表。即SELECT语句中FROM后的对象。

结果对象

    此为范围表中识别结果对象的索引。SELECT查询无结果对象。对于INSERT,UPDATE或DELETE,结果对象即为操作涉及的表(或视图)。

目标列表

    目标列表为定义查询结果的表达式列表。对于SELECT,即为位于SELECT与FROM之间的部分;DELETE无需普通的目标列表;INSERT中目标列表为新行;UPDATE中目标列表为替代旧行的新行。

限定条件

    查询的限定条件是一个表达式,非常类似于包含在目标列表项中的表达式。表达式的结果值为布尔类型,以决定操作是否执行。类似于SQL语句中的WHERE。

连接树

    查询的连接树展示FROM子句的架构。

其他

    其他部分此处不予赘述。

以上是关于40.1. The Query Tree的主要内容,如果未能解决你的问题,请参考以下文章

HDU 4836 The Query on the Tree lca || 欧拉序列 || 动态树

HDU 4836 The Query on the Tree lca || 欧拉序列 || 动态树

[CodeChef-QUERY]Observing the Tree

HDU 4010 Query on The Trees (动态树)(Link-Cut-Tree)

Binary Indexed Tree-307. Range Sum Query - Mutable

计蒜客38229 Distance on the tree 树剖