日期:2014-05-16  浏览次数:20784 次

ORCALE 海量数据统计问题
我现在数据库里面有一个表,3个小时就有3亿的数据,已经分区,也按要求加了索引了~现在单挑查询的话,速度很快,分了页的,1秒内可以查询出来,但是统计的话,和时间无关了,需要统计一个星期的数据,我现在统计3个小时的所有数据,都要10分钟左右,请问有什么好方法解决吗?希望能在1分钟内~

------解决方案--------------------
根据你的业务可以将分区表再次进行划分,变为复合分区
复合分区的下级分区是按网站ID,或者网站名称第一个首字母进行分区,查询的时候就快了,但是能不能到1分钟内就得看你的数据库性能了

还有一种方法,用物化视图来统计每个小时内的网站浏览数
------解决方案--------------------
你这些统计应该不用太精确的,比如你可以接受的误差范围是1个小时,那么可以这样做:

基表A

物化视图B(创建表时指定nologging,每个小时增量刷新):

select * from A where 你筛选的数据范围;

物化视图C(创建表时指定nologging,基于B的on commit refresh):

select 网站ID,count(1) from A group by 网站ID;


------解决方案--------------------
关键不是查询,而是统计。
在源表中,统计 + 查询,明显不合适。

建议 源表 -> 统计表 -> 分析查询