跨日期索引的Oracle数据分发

时间:2011-09-23 13:57:24

标签: oracle indexing

在大型数据库表(约5000万行)中出现这种情况,用户需要浏览日期索引记录。

但浏览数据的用户不一定知道时间线数据的位置以及差距在哪里。在过去的项目中,我已将记录量化为24小时“桶”,并使用它来创建条形图时间轴,其中条形的高度表示该时间段内的记录数。这使用户可以专注于实际存在数据的区域。

此解决方案的缺点是必须不断更新和维护记录计数(如果可以从时间轴上的任何点插入/删除数据)。

获取这些总记录数是否有更优雅的解决方案?例如,通过查看日期索引并查看与该索引相关联的值数量?

2 个答案:

答案 0 :(得分:1)

不太确定你在问什么,但面对类似情况,我会做以下事情:

在s_date上对表进行分区。 (这是你的“桶”,分区吗?)

在s_date上创建位图索引。

生成如下统计信息:

select s_date,  count(s_date) from big_table where s_date > '01-APR-11' group by s_date;

你也可以阅读oracle的“Gathering Optimizer Statistics”,很高兴知道。

欢呼声。

答案 1 :(得分:1)

我不确定这对你是否真的有效,但听起来你正在寻找的是histograms。如果索引存在直方图,则可以查询USER_HISTOGRAMS以大致了解索引中值的分布。这样做的缺点是,它只会在上次为您的索引收集统计信息时准确无误,因此如果您的数据经常更改,则可能不是最新的。