扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:中国IT实验室 来源:中国IT实验室 2007年10月11日
关键字: ORACLE
在本页阅读全文(共4页)
二、物化视图
通常,在数据仓库中可以通过创建摘要信息(summary)来提升性能。这里的摘要指的是预先对一些连接(join)和聚合(aggregation)进行计算并将结果保存下来,后续查询的时候可以直接利用保存的摘要信息来生成报表。在oracle中,可以利用物化视图(materialized view)来创建数据仓库中的摘要。结合oracle优化器的查询重写(query rewrite)功能,可以在不改写应用的情况下,利用物化视图提升查询性能。显然,物化视图需要一种刷新机制来保证和基表的数据同步,Oracle提供了两种刷新方式:增量刷新(fast refresh)和完全刷新(complete refresh)。增量刷新方式需要满足一系列的条件(具体的限制条件请参考Metalink:Doc ID: Note:222843.1),简单起见,本文例子中的物化视图采用了完全刷新方式。
假如我们要得到每月的销售总量统计,可以执行以下查询:
SQL> set autot trace exp
SQL> select t.t_month, sum(f.amount1),sum(f.amount2)
2 from time_dim t,fact_sales f
3 where t.time_id=f.time_id
4 group by t.t_month;
已选择33行。
执行计划
----------------------------------------------------------
Plan hash value: 53462861
----------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1000 | 61000 | 9 (23)| 00:00:01 |
| 1 | HASH GROUP BY | | 1000 | 61000 | 9 (23)| 00:00:01 |
|* 2 | HASH JOIN | | 1000 | 61000 | 8 (13)| 00:00:01 |
| 3 | TABLE ACCESS FULL| TIME_DIM | 1000 | 22000 | 4 (0)| 00:00:01 |
| 4 | TABLE ACCESS FULL| FACT_SALES| 1000 | 39000 | 3 (0)| 00:00:01 |
----------------------------------------------------------------------------------创建一个月度统计的物化视图:
SQL> create materialized view mv_month
2 refresh complete
3 enable query rewrite
4 as
5 select t.t_month, sum(f.amount1),sum(f.amount2)
6 from time_dim t,fact_sales f
7 where t.time_id=f.time_id
8 group by t.t_month;

实体化视图已创建。
再次执行相同的查询,发现执行计划已经改变,优化器自动使用刚才建立的物化视图代替两张基表的查询:
SQL> select t.t_month, sum(f.amount1),sum(f.amount2)
2 from time_dim t,fact_sales f
3 where t.time_id=f.time_id
4 group by t.t_month;
已选择33行。
执行计划
----------------------------------------------------------
Plan hash value: 3083828679
-----------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 33 | 1155 | 3 (0)| 00:00:01 |
| 1 | MAT_VIEW REWRITE ACCESS FULL| MV_MONTH | 33 |1155 |3 (0)| 00:00:01 |
-----------------------------------------------------------------------------------
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。