博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第15课:参数化路径
阅读量:4074 次
发布时间:2019-05-25

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

在谓词下推的过程中,对于 …FROM A JOIN B ON A.a = B.b 这种类型的约束条件肯定是不能下推的。原因是 A.a = B.b 这样的约束条件既引用了 LHS 表的列属性,又引用了 RHS 表的列属性,必须在获得两个表的元组之后才能应用这样的约束条件。现在假如在 B.b 属性上有一个索引 B_b_index,但没有能够匹配索引的约束条件,索引扫描路径或者不会被采纳,或者采纳为对整个索引进行扫描(例如 Fast Index Scan,这时候将索引视为一个表,实际上和 SeqScan 类似),发挥不了索引对数据筛选的作用。

借用参数来产生索引扫描路径

PostgreSQL 优化器最大的优势是“没有困难,制造困难也要上”。在没有办法使用索引扫描的情况下,制造办法使用索引扫描,也是一种能力……

假设 …FROM A JOIN B ON A.a = B.b 生成的执行计划是嵌套循环连接,A 表作为外表做 SeqScan,B 表作为内表也做 SeqScan。

Nestloop Join (JoinCluase: A.a = B.b)    ->SeqScan (A)    ->SeqScan (B)它的执行过程应该是这样的:1)    从 A 表取出一条元组2)    如果 A 表已经扫描完毕,执行结束3)    从 B 表取出一条元组4)    如果 B 表已经扫描完毕,跳转到步骤 1)5)    对两个元组应用 A.a = B.b 的约束条件6)    如果符合 A.a = B.b 的约束条件,则返回连接结果,下一次执行跳转到步骤 3)7)    如果不符合 A.a = B.b 的约束条件,则直接跳转到步骤 3)

通过这些执行步骤可以看出&#

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

你可能感兴趣的文章
【JAVA数据结构】先进先出队列
查看>>
String类的intern方法随笔
查看>>
【泛型】一个简易的对象间转换的工具类(DO转VO)
查看>>
1.随机函数,计算机运行的基石
查看>>
MouseEvent的e.stageX是Number型,可见as3作者的考虑
查看>>
在mc中直接加aswing组件,该组件还需最后用validate()方法
查看>>
移植Vim配色方案到Eclipse
查看>>
从超链接调用ActionScript
查看>>
谈谈加密和混淆吧[转]
查看>>
TCP的几个状态对于我们分析所起的作用SYN, FIN, ACK, PSH,
查看>>
网络游戏客户端的日志输出
查看>>
关于按钮的mouseOver和rollOver
查看>>
《多线程服务器的适用场合》例释与答疑
查看>>
Netty框架
查看>>
Socket经验记录
查看>>
对RTMP视频流进行BitmapData.draw()出错的解决办法
查看>>
多年前写的一个ASP.NET网站管理系统,到现在有些公司在用
查看>>
FMS 客户端带宽计算、带宽限制
查看>>
在线视频聊天(客服)系统开发那点事儿
查看>>
语法解析器!
查看>>