博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第09课:等价推理
阅读量:4074 次
发布时间:2019-05-25

本文共 710 字,大约阅读时间需要 2 分钟。

在 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 = 5。

从执行计划中还可以看出,a.a = b.a 这个约束条件也被消除掉了,这是因为做扫描操作的时候已经把不等于 5 的数据过滤掉了,只有等于 5 的数据才能被返回给嵌套循环连接结点。由此,在嵌套循环连接结点再做一次 a.a = b.a 就显得有点多余了。

postg

转载地址:http://koyni.baihongyu.com/

你可能感兴趣的文章
mongdb介绍
查看>>
Yotta企业云盘更好地为教育行业服务
查看>>
Yotta企业云盘怎么帮助到能源化工行业
查看>>
企业云盘如何助力商业新发展
查看>>
医疗行业运用企业云盘可以带来什么样的提升
查看>>
媒体广告业如何运用云盘提升效率
查看>>
IOS开发的开源库
查看>>
Jenkins - sonarqube 代码审查
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成(一)
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成 - 单机部署(二)
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成 - 高可用集群部署(三)
查看>>
C#控件集DotNetBar安装及破解
查看>>
Winform皮肤控件IrisSkin4.dll使用
查看>>
Winform多线程
查看>>
C# 托管与非托管
查看>>
Node.js中的事件驱动编程详解
查看>>
mongodb管理与安全认证
查看>>
nodejs内存控制
查看>>
nodejs Stream使用中的陷阱
查看>>
MongoDB 数据文件备份与恢复
查看>>