查询包含Oracle数据库中数百万行的表

时间:2011-12-19 10:27:49

标签: performance oracle query-optimization data-warehouse

我有一个表财务(列:日期,月份,季度,amount_usd,col1,col2,col3)。

简单查询......

select sum(amount_usd) from finance
group by date

......需要7秒

select sum(amount_usd) from finance
group by month

......需要6秒

select sum(amount_usd) from finance
group by quarter

......需要5秒

所以我想到了数据仓库

我创建了时间维度和层次结构

  • 作为月子女的日期
  • 作为季度孩子的月份

现在我被卡住了......

我的事实表是什么? 以及如何从事实表中查询数据?

这可能是一个非常基本的问题。但我是新手。

由于

1 个答案:

答案 0 :(得分:6)

  

"所以我的简单查询是花时间并考虑拥有数据   仓库概念......"

七秒不慢。至少,不需要数据仓库"慢。数据仓库是一种战略性(通常是企业级)环境,而不是一种调整技术。

但是,我同意,等待屏幕刷新的OLTP用户可能会有点恼火。您需要做的是调整查询。你说你有索引:但如果你总结整个财务表,那么你可能不想使用索引。如果您拥有Enterprise Edition许可证和多个具有备用容量的CPU,那么并行查询可能是更好的主意。

如果您每天多次运行这些财务查询,您可以从预先聚合中获得一些好处,但似乎不太可能减少经过的时间来证明维护物化视图的开销。