程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> ORACLE 物化視圖,oracle物化視圖

ORACLE 物化視圖,oracle物化視圖

編輯:Oracle教程

ORACLE 物化視圖,oracle物化視圖


最近幾天,我負責的P項目環境中提供給W系統的一個視圖,由於查詢邏輯復雜,數據量比較大,導致每次查詢視圖的時候,查詢速度慢,效率低下,遭到了w系統人員的投訴。想了想,還是改成物化視圖吧,用了物化視圖,腰不酸,腿不痛,查詢快了,投訴少了,誰用誰知道,呵呵。

真要詳細陳述物化視圖的相關內容,篇幅過大,所以此處僅記錄了我自己在這次調整中所做的操作。創建最簡單的物化視圖,不使用快速刷新,所以此處不創建物化視圖日志。

創建物化視圖語句如下(因為數據問題,此處更改了查詢內容):

CREATE MATERIALIZED VIEW MV_TableName
        BUILD IMMEDIATE      --創建時立即刷新
         REFRESH FORCE        --如果可以快速刷新則進行快速刷新,否則完全刷新
         ON DEMAND            --刷新方式
         START WITH SYSDATE   --第一次刷新時間
         NEXT  SYSDATE+1/12   --刷新時間間隔
         AS SELECT 1 id ‘A’ name FROM dual;

我自己在PLSQL中執行的時候,有時會因為注釋的原因,導致物化視圖創建失敗,所以,創建時還是刪去注釋吧。

 

如果某些情況想要修改刷新頻率,可以使用以下命令修改刷新間隔

ALTER MATERIALIZED VIEW MV_TableName
       REFRESH FORCE 
       ON DEMAND 
       START WITH SYSDATE 
       NEXT SYSDATE+1/144;

 

查詢物化視圖上次刷新時間

SELECT last_refresh_date 
     FROM user_mviews 
    WHERE mview_name = 'MV_TABLENAME';

 

手動刷新物化視圖

BEGIN
       dbms_mview.refresh('MV_TABLENAME');
    END;

 

刪除物化視圖的話,可以使用如下語句

DROP MATERIALIZED VIEW MV_TableName;

Oracle物化視圖

不能的,你的基表要是實體表的,雖然物化視圖說和實際的表一樣的功能,提高查詢速度,不過還是有本質區別的,如果是想這樣做的話,你可以創建多份物化視圖的,對於同一個表,或是在建立的物化視圖A上創建觸發器,自己生成日志,寫個存儲過程加上job進行數據同步一樣的。不過建議你,還是用第一種,簡單點。
 

oracle 怎手動刷新物化視圖

exec dbms_mvview.refresh('MV_NAME');
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved