所以物化視圖和視圖的最大區(qū)別是,物化視圖在本地保存數(shù)據(jù),而視圖只是一些SQL語句而已。視圖的好處是簡化使用過程,物化視圖的好處提高性能,當(dāng)然也可以簡化使用過程。提高查詢速度的代價(jià)就是放棄一定的數(shù)據(jù)實(shí)時(shí)性。
創(chuàng)建物化視圖,應(yīng)先在對于的基礎(chǔ)表上創(chuàng)建存儲的日志空間:
create materialized view log on tablex
tablespace mytestspace -- 日志空間
with rowid;
然后再創(chuàng)建物化視圖:
create materialized vew myfirstmv
on prebuild tabley -- 將物化視圖建立在一個(gè)已經(jīng)存在的表上,也可不加這句
tablespace mytestspace
build deffered -- buld clause子句,deffered表示創(chuàng)建時(shí)不生成數(shù)據(jù),默認(rèn)為build immediate
refresh fast -- refresh 子句。fast表示只刷新上次刷新之后所作的修改。相對為complete。默認(rèn)為force
on commit -- 對基表的DML操作提交的同時(shí)進(jìn)行刷新。默認(rèn)為on demand
start with to_date('2008-08-08 20:00:00', 'yyyy-mm-dd hh24:mi:ss') --第一次刷新時(shí)間
next TRUNC(SYSDATE+1)+18/24 --刷新時(shí)間間隔。每兩天刷新一次,時(shí)間為下午6點(diǎn)
as
select x1, x2, x3 from tablex
刪除時(shí),刪除物化視圖和物化視圖日志無順序要求,不過先刪除日志,會使刪除物化視圖的速度加快很多。
如果物化視圖日志存在的話,物化視圖在刪除的時(shí)候,需要將物化視圖日志中所有當(dāng)前物化視圖需要刷新的記錄刪除掉。這意味著一個(gè)DDL的語句中包含著DML的部分。
以上都沒經(jīng)過實(shí)際操作,以后有時(shí)間再說
http://xznsoft.javaeye.com/blog/124000