第09课:等价推理

本文探讨了SQL查询中的等价推理技术,包括含有常量的等价推理,如何产生新的连接条件,有序性的等价推理以及在外连接中的优化。通过等价推理,可以提高查询效率,例如将常量约束条件下推到扫描阶段,或在全连接中利用等价类生成额外过滤条件。等价推理增加了优化器的选择,但也可能导致生成执行计划的时间增加。
摘要由CSDN通过智能技术生成

在 SQL 语句中,经常会有 A=B 这样的约束条件,它的操作符是等值操作符。我们将这种等值约束条件称为“等价条件”,而基于多个等价条件进行推理而获得的等价属性的集合就是“等价类”。

含有常量的等价推理

假如等价约束条件中的一端是常量,这种等价的推理就会显得更有意义。假如有两个约束条件 A=B 和 B=5,从谓词下推的角度来看,A=B 肯定只能作为一个连接条件。只有在连接操作做完之后,A=B 这样的约束条件才能获得约束条件两端的值。因此,这个约束条件是没有办法下推的,对于 B=5 这样的约束条件呢?如果是内连接的话,通常而言它是能下推的。

如果能通过 A=B 和 B=5 这样的两个约束条件推理出一个新的 A=5 的约束条件,由于 A=5 这样的单属性(只涉及一个表)约束条件或许能够下推到单表上,这样就可以在对表进行扫描的时候把没用的元组过滤掉,从而提高执行的效率。

例如 SQL 语句 SELECT * FROM TEST_A a,TEST_B b WHERE a.a = b.a AND b.a = 5,本来只能在连接结果产生之后使用 a.a = b.a 对连接结果进行过滤。但是如果推理出 b.a = 5 这样一个过滤条件,那么就能把这个过滤的操作下推到对 TEST_A 表的扫描上。如下面的示例所示,的确产生了新的约束条件 a.a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值