Materialized View

Materialized View

2010-04-30 6:48

create materialized view [view_name]
refresh [fast|complete|force]
[
on [commit|demand] |
start with (start_time) next (next_time)
]
as
{
建物化视图用的查询语}
以上是Oracle建物化视图Materialized View的常用,各参数的含如下:
1.refresh [fast|complete|force]
视图刷新的方式:
fast: 增量刷新.前一次刷新的时间为t1,使用fast模式刷新物化视图时,只向视图中添加t1到当前时间段内,主表的数据.记录这种变化,建立增量刷新物化视图还需要一个物化视图日志表。create materialized view log on (主表名)。
complete:
全部刷新。
相当于重新行一次视图查询语句。
force:
是默的数据刷新方式。当可以使用fast模式,数据刷新将采用fast方式;否使用complete方式。
2.MV
数据刷新的时间
on demand:
在用需要刷新的候刷新,里就要求用自己手去刷新数据了
on commit:
当主表中有数据提交的候,立即刷新MV中的数据;
start ……
:从指定的时间开始,隔一段时间(由next指定)就刷新一次。
Oracle的物化视图提供了强大的功能,可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果;物化视图有很多方面和索引很相似;使用物化视图的目的是为了提高查询性能;物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL语句的正确性和有效性;物化视图需要占用存储空间;当基表发生变化时,物化视图也应当刷新。
物化视图可以分以下三种类型:包含聚集的物化视图;只包含接的物化视图;嵌套物化视图
建物化视图时可以指定多种选项,下面主要的选择进简单说明:
建方式(Build Methods):包括BUILD IMMEDIATEBUILD DEFERREDBUILD IMMEDIATE是在建物化视图候就生成数据,而BUILD DEFERRED不生成数据,以后根据需要在生成数据。默认为BUILD IMMEDIATE
查询重写(Query Rewrite):包括ENABLE QUERY REWRITEDISABLE QUERY REWRITE指出建的物化视图是否支持查询重写。查询重写是指当物化视图的基表查询时Oracle会自判断能否通过查询物化视图来得到果,如果可以,避免了聚集或接操作,而直接从已经计算好的物化视图取数据。默认为DISABLE QUERY REWRITE
刷新(Refresh):指当基表生了DML操作后,物化视图采用哪方式和基表行同。刷新的模式有两ON DEMANDON COMMIT
ON DEMAND指物化视图在用需要的行刷新,可以手工通DBMS_MVIEW.REFRESH等方法来行刷新,也可以通JOB时进行刷新。
ON COMMIT
指出物化
视图基表的DML操作提交的同时进行刷新。刷新的方法有四FASTCOMPLETEFORCENEVERFAST刷新采用增量刷新,只刷新自上次刷新以后行的修改。COMPLETE刷新整个物化视图进行完全的刷新。如果选择FORCE方式,Oracle在刷新会去判断是否可以行快速刷新,如果可以采用FAST方式,否采用COMPLETE的方式。NEVER指物化视图行任何刷新。默认值FORCE ON DEMAND
在建立物化
视图候可以指定ORDER BY句,使生成的数据按照一定的行保存。过这句不会写入物化视图的定中,而且以后的刷新也无效。
物化视图日志:如果需要行快速刷新,需要建立物化视图日志。物化视图日志根据不同物化视图的快速刷新的需要,可以建立ROWIDPRIMARY KEY型的。可以选择是否包括SEQUENCEINCLUDING NEW VALUES以及指定列的列表。可以指明ON PREBUILD TABLE句将物化视图建立在一个已存在的表上。这种情况下,物化视图和表必同名。当除物化视图时,不会除同名的表。这种物化视图查询重写要求参数QUERY_REWRITE_INTEGERITY须设trusted或者stale_tolerated
如何将物化视图建立在特定的表空? 看如下一例:
建物化视图时应建存的日志空
CREATE MATERIALIZED VIEW LOG ON mv_lvy_levytaxbgtdiv
tablespace ZGMV_DATA --
日志保存在特定的表空
WITH ROWID ;
CREATE MATERIALIZED VIEW LOG ON tb_lvy_levydetaildata
tablespace ZGMV_DATA --
日志保存在特定的表空
WITH ROWID,sequence(LEVYDETAILDATAID);
CREATE MATERIALIZED VIEW LOG ON tb_lvy_levydata
tablespace ZGMV_DATA --
日志保存在特定的表空
WITH rowid,sequence(LEVYDATAID);
然后建物化视图
--
建物化视图
create materialized view MV_LVY_LEVYDETAILDATA
TABLESPACE ZGMV_DATA --
保存表空
BUILD DEFERRED --
刷新不立即刷新
refresh force --
如果可以快速刷新则进行快速刷新,否完全刷新
on demand --
按照指定方式刷新
start with to_date('24-11-2005 18:00:10', 'dd-mm-yyyy hh24:mi:ss') --
第一次刷新时间
next TRUNC(SYSDATE+1)+18/24 --
刷新时间间
as
SELECT   ……...
FROM ……...
除物化视图日志
--
除物化视图
--
除日志:
DROP materialized view log on mv_lvy_levytaxbgtdiv;
DROP materialized view log on tb_lvy_levydetaildata;
DROP materialized view log on tb_lvy_levydata;
--
除物化视图 drop materialized view MV_LVY_LEVYDETAILDATA;
--
基本和表的操作一致
--
物化
视图由于是物理真存在的,故可以建索引,建方式和普通表建方式相同。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值