1、介绍
视图( View ):一段通过查询语句,将一个或多个源表的关注字段组合在一起的虚表,视图本身并不储存数据;每次查询视图,都会执行视图的select语句。
物化视图( Materialized View ):物化视图,相当于一个实表,Table中可以查询到,会存储源表的数据,通过一定的机制进行数据刷新;每次查询物化视图,相当于从普通表中select
由此可见,视图牺牲速度换空间,物化视图牺牲空间换速度。
2、创建物化视图
物化视图名正常带有MV字眼,这是约定俗成的
创建语句如下,黄色部分为可选参数
create materialized view XX_MV_SYNC_PTS_WIP build immediate refresh force on demand start with sysdate next sysdate+1 with primary key as select 语句!
可选参数说明
build:创建MV时是否立即刷新
build immediate(默认):创建立即刷新
build deferred:延迟刷新,刚创建不会刷新
refresh:刷新方式
fast:快速刷新,需要创建MV Log,适合简单查询
complete:完全刷新
force(默认):自己判断进行fast还是complete
on:刷新模式
ON demand(默认):手动刷新,可定义刷新频率进行自动刷新
ON commit:主表commit就自动刷新
补充:手动刷新方式
begin dbms_mview.refresh('XX_MV_SYNC_PTS_WIP','C'); end; ‘C’:代表complete刷新
start with:刷新频率
start with sysdate next sysdate+1:创建物化视图的时候立即刷新,并一天刷新一次 start with sysdate next sysdate+1/24:创建物化视图的时候立即刷新,并一小时刷新一次
with:为MV选定唯一标识
with primary key(默认):将源表主键作为唯一标识,需要select源主表所有主键字段
with rowid:将源表rowid作为唯一标识,MV的Select语句里带有聚合函数,必须使用rowid
3、创建MV Log
MV Log:记录源表的增删改动作,为MV提供快速刷新依据,记住MV Log是基于源表的,不是基于MV的
如果MV的刷新方式选择了fast,需要创建源表的MV Log。
创建语句:
create materialized view log on 源表 with [rowid || primary key]
(需要注意,MV的语句需要包含所需源表的rowid 或者 primary key,这样和MV Log才可以一一对应到)
MV LOG也是一个表,在Table中可以查询到
参数说明:
with:同上,为MV Log选定唯一标识。
写个wit rowid的例子(先创建MV Log,再创建MV)
create materialized view log on tb1 with rowid; create materialized view log on tb2 with rowid; create materialized view mv_wip refresh fast on commit with rowid as select tb1.rowid, tb2.rowid from tb1, tb2
以上,为物化视图的简单介绍!
欢迎大家留言讨论。
原文地址:http://www.cnblogs.com/wskxy/p/16859996.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性