40.1. The Query Tree

查询树是SQL语句的内部表示形式,用于规则系统操作,它结合解析器输出和用户定义的重写规则产生0或多个查询树。规则系统在数据库的解析器和计划器之间,影响查询处理。查询树包括命令类型、范围表、结果对象、目标列表、限定条件等组成部分,这些信息在日志和系统视图中可见。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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子句的架构。

其他

    其他部分此处不予赘述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值