PostgreSQL的缩小数据集优化过程一例

2014-11-24 18:21:34 · 作者: · 浏览: 0

一.分析
看其结果是要取10条不同的数据做报表展示,用了同一张表做了两次关联,没有涉及查询条件,索引效果不大。分析这个SQL好不好,先看一下执行计划


二.优化过程
1.取消两张表的关联,只取一次查询 优化后的SQL:


查看其执行计划:


2.其执行计划中的cost还是有点高,再次优化 postgresql中的sum会自动把null值替换成0,并考虑到不会存入''或者' '等空值,故可以去掉里面的coalesce转换函数。
优化后的SQL:


查看执行计划:

结果是一样的,从侧面也反映出PostgreSQL的这个内部转换函数消耗不是很大

3.缩小查询基数,提升查询性能 之前的查询语句都是先全表扫描基础表并按规则排序和分组,最后才取10条,其实从另一个角度可以先取一定数量的数据,不用全表,但是一般可满足数据结果的不同,然后再取10条出来。

优化后的SQL


此时再来看执行计划: 效果有了显著的提升,特别是遇到基础表快速膨胀的时候,响应时间也快了很多。


此方法对其他DB也适用,但是要与业务结果相匹配。