1.简介
物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。这样对整体查询性能的提高,并没有实质上的好处。
物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能;物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL 语句的正确性和有效性;物化视图需要占用存储空间;当基表发生变化时,物化视图也应当刷新。
物化视图有三种:聚集物化视图、包含连接物化视图、嵌套物化视图。但三种物化视图的快速刷新的限制条件有很大区别,而其他方面则区别不大。
2.使用
1)创建
create materialized view materialized_view_name
build [immediate|deferred]
refresh [complete|fast|force|never]
on [commit|demand]
start with (start_date)
next (interval_date)
with [primary key|rowid]
[ENABLE|DISABLE] QUERY REWRITE
as
select statement;
1.1)创建方式 build [immediate|deferred]
BUILD IMMEDIATE是在创建物化视图的时候就生成数据,而BUILD DEFERRED则在创建时不生成数据,以后根据需要在生成数据。默认为BUILD IMMEDIATE。
1.2)刷新方式 refresh [complete|fast|force|never]
FAST刷新采用增量刷新,只刷新自上次刷新以后进行的修改。COMPLETE刷新对整个物化视图进行完全的刷新。如果选择FORCE方式,则Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用FAST方式,否则采用COMPLETE的方式。NEVER指物化视图不进行任何刷新。默认为FORCE。
1.3)刷新模式 on [commit|demand]
ON DEMAND指物化视图在用户需要的时候进行刷新,可以手工刷新,也可以通过JOB定时进行刷新。ON COMMIT指出物化视图在对基表的DML操作提交的同时进行刷新。
手动刷新方式:
SQL>execute dbms_mview.refresh('EMP_BY_DISTRICT'); --刷新指定的物化视图
SQL>execute dbms_mview.refresh_defresh_dependent('EMPLOYEE'); ――刷新利用了该表的所有物化视图
SQL>execute dbms_mview.refresh_all_mviews; ――刷新该模式中,自上次刷新以来,未得到刷新的所有物化视图。
1.4)start with (start_date) next (interval_date)
通知数据库完成从主表到本地表第一次复制的时间,应该及时估计下一次运行的时间点,因此它是和next成组出现。
如:start with sysdate next sysdate+2 每两天刷新一次
1.5)物化视图日志 with [primary key|rowid]
如果需要进行快速(FAST)刷新,则需要建立物化视图日志。物化视图日志根据不同物化视图的快速刷新的需要,可以建立为ROWID或PRIMARY KEY类型的。还可以选择是否包括SEQUENCE、INCLUDING NEW VALUES以及指定列的列表。
WITH PRIMARY KEY(默认),生成主键物化视图,也就是说物化视图是基于表的主键,而不是ROWID(对应于ROWID子句)。 为了生成PRIMARY KEY子句,应该在表上定义主键,否则应该用基于ROWID的物化视图。主键物化视图允许识别物化视图表而不影响物化视图增量刷新的可用性。
WITH ROWID,只有一个单一的主表,不能包括下面任何一项,Distinct,聚合函数,Group by,子查询,连接,SET操作。
1.6)[ENABLE|DISABLE] QUERY REWRITE
分别指出创建的物化视图是否支持查询重写。查询重写是指当对物化视图的基表进行查询时,Oracle会自动判断能否通过查询物化视图来得到结果,如果可以,则避免了聚集或连接操作,而直接从已经计算好的物化视图中读取数据。
2)删除物化视图日志
drop materialized view log on materialized_view_name;
3)删除物化视图
drop materialized view materialized_view_name;
3.参考资料
http://blog.sina.com.cn/s/blog_6ceed3280100xcdv.html
http://www.itpub.net/thread-1614812-1-1.html
相关推荐
Oracle物化视图创建和使用,设置物化视图的自动刷新时间
Oracle物化视图使用[文].pdf
Oracle物化视图增量刷新的应用研究.pdf
利用ORACLE物化视图建立报表数据库.pdf
Oracle物化视图应用详,有实例和各属性介绍
里面详细讲述物化视图的种种创建,物化日志的结构,group by 语句创建物化视图的处理
物化视图学习笔记 错误问题分析总结 详细讲解了物化视图的内部构造,从零基础开始学习 重点说明ORA-12034的错误解决方案
物化视图 (MV)在一个段中存储查询结果,并且能够在提交查询时将结果返回给用户,从而不再需要重新执行查询 — 在查询要执行几次时,这是一个很大的好处。物化视图可以利用一个快速刷新机制从基础表中全部或增量刷新...
Oracle物化视图整理,包含所有资料,值得学习
Oracle物化视图介绍 根据学习总结并将多篇文章结合而成。
oracle物化视图资料,表明物化视图的创建等
物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。
基于Oracle物化视图日志的数据同步技术研究.pdf
ORACLE物化视图说明
ORACLE9I物化视图
ORACLE物化视图的技术应用.pdf
浅析利用Oracle物化视图对查询优化.pdf
基于Oracle物化视图的查询性能优化.pdf
基于ORACLE物化视图的电力营销系统优化.pdf