博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第11课:逻辑优化汇总
阅读量:4074 次
发布时间:2019-05-25

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

目前已经比较着重地介绍过子连接和子查询的提升、表达式的规范化、外连接的消除、等价推理、连接顺序交换、谓词下推等逻辑优化方法,实际上,PostgreSQL 还做了很多逻辑优化,我们把这些优化在这一课做一个汇总。

Having 子句的优化

在 Having 子句中,有些约束条件是可以转变为过滤条件的。这里对 Having 子句中的约束条件进行了拆分,从下面的示例可以看出,c > 0 这个约束条件已经变成了 TEST_A 表扫描路径上的过滤条件,而 SUM(a) > 100 这个约束条件则保留在了原来的位置。

postgres=# EXPLAIN SELECT SUM(a),b,c FROM TEST_A WHERE b > 0 GROUP BY b,c HAVING SUM(a) > 100 AND c > 0;                          QUERY PLAN--------------------------------------------------------------- HashAggregate  (cost=3.50..4.75 rows=33 width=16)   Group Key: b, c   Filter: (sum(a) > 100)   ->  Seq Scan on test_a  (cost=0.00..2.50 rows=100 width=12)         Filter: ((b > 0) AND (c > 0))(5 rows)

Group By 键值化简

Group By 子句的实现需要借助排序或者哈希来实现,如果能减少 Group By 后面的字段,就能降低排序或者哈希带来的损耗。

对于一个有主键(Primary Key)的表,如果 Group By 的字段包含

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

你可能感兴趣的文章
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 客户端带宽计算、带宽限制
查看>>
在线视频聊天(客服)系统开发那点事儿
查看>>
语法解析器!
查看>>
SecurityError Error 2148 SWF 不能访问本地资源
查看>>
Flex4的可视化显示对象
查看>>
Flex:自定义滚动条样式/隐藏上下箭头
查看>>