Oracle物化视图
物化視圖是一種特殊的物理表,“物化”(Materialized)視圖是相對普通視圖而言的。普通視圖是虛擬表,應用的局限性大,任何對視圖的查詢,Oracle都實際上轉換為視圖SQL語句的查詢。這樣對整體查詢性能的提高,并沒有實質上的好處。
創建物化視圖需要的權限:
grant?create?materialized?view?to?user_name;?
創建語句:
create materialized view mv_name [選項n] as select * from table_name;
?
[選項1]:BUILD [immediate,deferred] 是否在創建視圖時生成數據,默認生成、deferred為不生成數據,需要的時候生成
[選項2]:refresh??[fast|complete|force|never] fast是增量刷新,或者叫快速刷新;complete為全表刷新;force為如果增量刷新可以使用則使用增量刷新,否則全表刷新;never則是不進行刷新(不使用)
[選項3]:on [demand,commit] 即手工刷新和提交時刷新
[選項4]:start with 通知數據庫完成從主表到本地表第一次復制的時間
[選項5]:next 說明了刷新的時間間隔,下次刷新的時間=上次執行完成的時間+時間間隔
?
例子1:
create?materialized?view V_AB refresh force on commit as ?select * from a,b where a.id=b.id
分析:創建一個物化視圖來存儲a,b兩個表的數據,force表示盡量使用增量刷新,但是這種寫法只會進行全表刷新。commit表示自動刷新,也就是說,當我們增刪改a,b表后進行commit操作后,我們的物化視圖也會同時進行數據的刷新。如果想要使用增量刷新來提高效率,請看下面的例子
例子2:
首先要建立與原表rowid相關的物化視圖:
create materialized view log on A with rowid;
create materialized view log on B with rowid;
再創建真正的物化視圖
create materialized view V_AB refresh fast on demand start with sysdate next ?sysdate+1/1440 as?
select a.rowid as arowid,b.rowid as browid, (其余字段) from a,b where a.id=b.id;
這里使用demand代表手動刷新,start with代表開始復制的時間,next說明間隔一分鐘后刷新,也就是說,當我們增刪改a,b表后進行commit操作后,我們的物化視圖再經過1分鐘后會進行數據的刷新。
?
查詢已經建立的物化視圖語句:
SELECT *?FROM user_mviews?WHERE mview_name =?'物化視圖名稱';
?
轉自:https://www.cnblogs.com/lm970585581/p/7872868.html
轉載于:https://www.cnblogs.com/itplay/p/10801753.html
總結
以上是生活随笔為你收集整理的Oracle物化视图的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 精囊炎会导致男性不育吗
- 下一篇: Hackthebox--------ir
