PL/SQL 物化视图

http://docs.oracle.com/database/122/LNPLS/toc.htm
上一本官方PL/SQL参考书
好的,进入主题
物化视图就是用空间换时间,视图和表的区别一点就是表用来存储数据,而视图可以用来select查询多个表之间的查询数据。物化视图说白了就是把你视图中写的数据提前根据日志拼凑出来,达到用空间来提高效率目的,因为它存储了你查询中部分返回的数据,可以进行直接的读取,比较,而不用再去做对多个表的读取。所以为了方便理解,也可以把物化视图理解成一个可以按时间定时刷新数据的表。

物化视图的创建

create materialized view wuhuashitu_MV refresh force on demand start with sysdate next
to_date(concat(to_char( sysdate+1,’dd-mm-yyyy’),’10:25:00’),’dd-mm-yyyy hh24:mi:ss’) as
select * from gl_je_sources;

1.refresh force: 如何刷新

“完全刷新(COMPLETE): 会删除表中所有的记录(如果是单表刷新,可能会采用TRUNCATE的方式),然后根据物化视图中查询语句的定义重新生成物化视图。

快速刷新(FAST): 采用增量刷新的机制,只将自上次刷新以后对基表进行的所有操作刷新到物化视图中去。FAST必须创建基于主表的视图日志。对于增量刷新选项,如果在子查询中存在分析函数,则物化视图不起作用。

FORCE方式:这是默认的数据刷新方式。Oracle会自动判断是否满足快速刷新的条件,如果满足则进行快速刷新,否则进行完全刷新。”
2.什么情况下刷新

          on demand  在需要时才进行更新 
          on commit  提交触发,一旦基表有了COMMIT,则立刻刷新,使得视图数据与基表数据完全相同,
                     但是这种方法影响基表数据查询速度。

默认on demand
3.start with..A…next…B.. :何时刷新

                     A   sysdate是让视图开始刷新的时间,此处是系统日期。

                     B  这个物化视图在每天10:25进行select 表gl_je_sources查询刷新

解决没有创建权限问题:grant create materialized view to 用户名;


细节

在源表建立物化视图日志:

create materialized view log on test_table

tablespace test_space – 日志空间

with primary key; – 指定为主键类型

修改刷新时间:

alter materialized view wuhuashitu_MV refresh force on demand start with sysdate

next to_date(concat(to_char(sysdate+1,’dd-mm-yyyy’),’ 23:00:00’),’dd-mm-yyyy hh24:mi:ss’);

alter materialized view wuhuashitu_MV refresh force on demand start with sysdate

next trunc(sysdate,’dd’)+1+1/24; – 每天1点刷新

删除物化视图及日志:

drop materialized view log on test_table; –删除物化视图日志:

drop materialized view mv_materialized_test; –删除物化视图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值