在大型数据库表(约5000万行)中出现这种情况,用户需要浏览日期索引记录。
但浏览数据的用户不一定知道时间线数据的位置以及差距在哪里。在过去的项目中,我已将记录量化为24小时“桶”,并使用它来创建条形图时间轴,其中条形的高度表示该时间段内的记录数。这使用户可以专注于实际存在数据的区域。
此解决方案的缺点是必须不断更新和维护记录计数(如果可以从时间轴上的任何点插入/删除数据)。
获取这些总记录数是否有更优雅的解决方案?例如,通过查看日期索引并查看与该索引相关联的值数量?
答案 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
以大致了解索引中值的分布。这样做的缺点是,它只会在上次为您的索引收集统计信息时准确无误,因此如果您的数据经常更改,则可能不是最新的。