Performance 从Oracle数据库查询包含数百万行的表
我有一个财务表(列:日期、月份、季度、金额、col1、col2、col3) 只是询问Performance 从Oracle数据库查询包含数百万行的表,performance,oracle,query-optimization,data-warehouse,Performance,Oracle,Query Optimization,Data Warehouse,我有一个财务表(列:日期、月份、季度、金额、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秒 所以我想到了数据仓库 我创建了时间维度和层次结构 作为月份的孩
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秒
所以我想到了数据仓库
我创建了时间维度和层次结构
- 作为月份的孩子的日期
- 作为季度之子的月份
如果您每天多次运行这些财务查询,您可能会从预聚合中获得一些好处,但似乎不太可能通过减少运行时间来证明维护物化视图的开销是合理的。这是从“我的查询运行缓慢”到“我需要数据仓库”的一大步。有多少行是“百万”行,您是否已经尝试过使用索引、分区表或其他方法来提高性能?数据仓库可能会使用与您描述的查询非常相似的查询,因此您可能需要更具体地说明您在此处所期望的内容。日期列看起来可能是划分数据的理想列。@Pondlife。。。事实上,我想知道…我的维度如何帮助性能…就像我创建了时间维度,但我什么时候会使用它…事实表可以是我的财务表…还是我必须有单独的财务表…是的,表中的所有索引都将有大约100万行…所以我的简单查询需要时间并考虑使用数据仓库概念。。。。Thanks@Avi一百万行对于任何现代数据库引擎来说都是一个小(ish)表,几乎可以肯定,仅仅为此构建数据仓库是不值得的。正如APC所回答的,您需要专注于优化查询(可能还有系统性能),而不是创建一个全新的数据库。这是从“我的查询运行缓慢”到“我需要一个数据仓库”的一大步。有多少行是“百万”行,您是否已经尝试过使用索引、分区表或其他方法来提高性能?数据仓库可能会使用与您描述的查询非常相似的查询,因此您可能需要更具体地说明您在此处所期望的内容。日期列看起来可能是划分数据的理想列。@Pondlife。。。事实上,我想知道…我的维度如何帮助性能…就像我创建了时间维度,但我什么时候会使用它…事实表可以是我的财务表…还是我必须有单独的财务表…是的,表中的所有索引都将有大约100万行…所以我的简单查询需要时间并考虑使用数据仓库概念。。。。Thanks@Avi一百万行对于任何现代数据库引擎来说都是一个小(ish)表,几乎可以肯定,仅仅为此构建数据仓库是不值得的。正如APC所回答的,您需要关注于优化查询(可能还有系统性能),而不是创建一个全新的数据库。