再次成为性能调优问题:
查询
select
ipc_class_symbol,count ( tls201_appln.appln_id)
from
tls201_appln,
tls209_appln_ipc
where
tls201_appln.appln_id=tls209_appln_ipc.appln_id
group by
tls209_appln_ipc.ipc_class_symbol
以计划执行
"HashAggregate (cost=9767241.49..9767481.92 rows=24043 width=16) (actual time=422312.135..422355.589 rows=72506 loops=1)"
" Buffers: shared hit=992580"
" -> Merge Join (cost=132.89..8764451.97 rows=200557904 width=16) (actual time=0.068..234936.829 rows=200557856 loops=1)"
" Merge Cond: (tls201_appln.appln_id = tls209_appln_ipc.appln_id)"
" Buffers: shared hit=992580"
" -> Index Only Scan using appln_id_idx on tls201_appln (cost=0.57..1673775.53 rows=81711664 width=4) (actual time=0.033..26993.348 rows=72642821 loops=1)"
" Heap Fetches: 0"
" Buffers: shared hit=198493"
" -> Index Only Scan using tls209_appln_ipc_keyidx on tls209_appln_ipc (cost=0.57..4604685.13 rows=200557904 width=16) (actual time=0.023..79085.426 rows=200557856 loops=1)"
" Heap Fetches: 0"
" Buffers: shared hit=794087"
"Total runtime: 422366.717 ms"
和持续时间
Total query runtime: 358032 ms.
72506 rows retrieved.
根据我的理解和阅读,我认为该计划有点优化。
该机为64GB,8核,专用win64bit服务器。索引表在SSD上,表格在旋转。
postgresql.conf
调整为我在此处找到的值(页面费用,内存等)。
现在的问题是,在使用SQL Server DBMS的类似计算机上,相同的查询在~18秒内返回。
(我希望将PostgreSQL用于生产系统,因为从长远来看,我们会比透明度和透明度更好地提供透明度和理解力)
我的最后一个猜测是,可能与底层性能原语/库有某种关系(遗憾的是我无法与不同的操作系统进行比较)。
因此,任何关于如何缩短执行时间的提示/意见/建议都会受到高度赞赏。
答案 0 :(得分:0)
索引tls209_appln_ipc.ipc_class_symbol,你应该从中获得一些速度。