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

Avi*_*Avi 1 oracle performance data-warehouse query-optimization

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

只是查询......

select sum(amount_usd) from finance
group by date
Run Code Online (Sandbox Code Playgroud)

......需要7秒

select sum(amount_usd) from finance
group by month
Run Code Online (Sandbox Code Playgroud)

......需要6秒

select sum(amount_usd) from finance
group by quarter
Run Code Online (Sandbox Code Playgroud)

......需要5秒

所以我想到了数据仓库

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

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

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

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

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

谢谢

APC*_*APC 6

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

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

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

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