DB2统计视图对基数估计没有影响

时间:2013-09-16 13:03:20

标签: sql db2 sqlperformance

我有一张桌子,我们叫它ACTIONS,它有大约1100万行。其中一列ACTION_DATE表示发生此事时。我想对昨天采取的行动进行每日报道,但有时候我想要从很久以前开始报道。该表包含大约3年前的数据。

ACTION_DATE列上的分布非常偏差。有时一天会有> 50k行动,其他日子只有几百。我在这个表上做了一个RUNSTATS,它很快就用其他几年的条目填充其频率列表,这导致db2错误计算访问该表的成本并导致执行计划错误。

我读过有关统计视图的内容,并认为这可能有助于解决问题。所以我做了一个这样的:

create view actions_recent as (select * from actions where action_date between current date - 90 days and current date);
alter view actions_recent enable query optimization
runstats on table actions_recent with distribution default num_freqvalues 90

但它似乎对成本估算或查询计划没有影响。

另一方面,如果我手动将特定日期的基数插入SYSSTAT表:

update sysstat.coldist set colvalue='2013-08-15',valcount=48562 where tabname='ACTIONS' and colname='ACTION_DATE' and seqno=1

并解释当天查询的访问计划,我看到它会收集信息并相应地调整成本。

我的统计观点出了什么问题?

0 个答案:

没有答案