Oracle物化视图

视图

视图是由一个查询sql定义的虚表,相当于对一个查询sql的结果集命名,把它当成一个普通表来使用,但视图中的数据没有实际的物理存储,它的数据都依赖于定义它的基表。视图的作用是可以屏蔽基表的基表的逻辑,只定义我们程序感兴趣的数据,在保护基表数据方面也有着一定的作用。

物化视图

物化视图通过字面意思理解是物理化视图,将视图的数据物理化,即物化视图的数据存储在磁盘等非易失的存储设备上,因此物化视图不是虚表,而是根据基表定义实际存在的实表。物化视图可以用于预先计算并保存多表的链接(JOIN)或聚集(GROUP BY)等耗时较多的SQL操作结果。这样,在执行复杂查询时,就可以避免进行这些耗时的操作,从而快速得到结果。物化视图的好处是对于一些复杂的统计类查询能直接查出结果。

物化视图的创建方式有两种:

  • IMMEDIATE
  • DEFERRED

物化视图的创建方式是指物化视图的创建后数据何时生成。IMMEDIATE创建方式,在创建物化视图的时候就生成数据,而DEFERRED则在创建物化视图时不生成数据,在第一次刷新视图时再生成数据。默认的创建方式是IMMEDIATE。

物化视图的刷新模式有两种:

  • ON DEMAND
  • ON COMMIT

物化视图的刷新是指当基表发生了DML操作后,物化视图怎么和基表进行同步。ON DEMAND在用户需要的时候进行刷新,可以设置一定的时间间隔定时刷新时间,ON COMMIT意味着物化视图在对基表的DML操作提交(COMMIT)的同时进行刷新。

物化视图刷新的方法有四种:

  • FAST
  • COMPLETE
  • FORCE
  • NEVER

FAST刷新采用增量刷新,只刷新自上次刷新以后进行的修改。COMPLETE刷新是对整个物化视图进行全量的刷新。FORCE方式则是数据库在刷新时会去判断是否可以进行FAST刷新,如果可以,则采用FAST方式,否则采用COMPLETE的方式。NEVER是指物化视图不进行任何刷新。

总结:本文是对物化视图学习的总结,并不深入研究物化视图如何使用,物化视图是一种通过预先处理达到优化复杂查询的方式,运用这种思想我们也可以自己维护一张表,定义自己的刷新处理逻辑,从而达到类似物化视图的效果,在不支持物化视图的数据库,如mysql中也能使用这种预先处理的方式优化复杂查询。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值