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. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性