DB2的分组统计信息改善SQL性能
-
zchbaby2000
2016-12-27 10:47:27
-
数据库开发技术
-
原创
在DB2 SQL的优化中,采用一定的方法来让DB2优化器预测一个靠谱的返回行数是非常重要的。
在两个表的join中,有2个或者更多的相等的join谓词,比较DB2优化器的估计行数和实际的行数,如果相差很大,好几个数量级,考虑使用列组统计信息来改善DB2优化器的估计值
from a, b
where a.id=b.id and a.name=b.name
这里要分析表a,b,弄清楚哪个是parent table,那个是child table,然后对parent table的2个列做分组统计
如果对于a表和b表来说,id和name列都满足
a.COLCARD > b.COLCARD
a.HIGH2KEY > b.HIGH2KEY
a.LOW2KEY < b.LOW2KEY
那么a表是parent table
在列分组runstats之前做上面的分析是有必要的,没有详细的分析,直接对a,b两个表的列组做runstats是不明智的。
在DB2的DPF环境下,对于确认那个是parent,那个是child,有更为严格的限制。
参照文章
http://www.ibm.com/developerworks/data/library/techarticle/dm-0612kapoor/index.html
分组统计的语法
db2 "runstats on table DB2INST1.ROLE on all columns and columns ((REP_NUM,ACCT_NUM)) WITH DISTRIBUTION AND INDEXES ALL"