帶您了解DB2物化視圖
DB2物化視圖(MQT)是一類特殊的視圖,下面就為您詳細介紹DB2物化視圖,供您參考,希望對您學(xué)習(xí)DB2數(shù)據(jù)庫能夠有所幫助。
可以將MQT看作一種物化的視圖。視圖和MQT 都是基于一個查詢來定義的。每當(dāng)視圖被引用時,視圖所基于的查詢便會運行。但是,MQT 實際上則是將查詢結(jié)果保存為數(shù)據(jù),可以使用 MQT 中的這些數(shù)據(jù),而不是使用底層表中的數(shù)據(jù)。
物化查詢表可以顯著提高查詢的性能,尤其是提高復(fù)雜查詢的性能。如果優(yōu)化器確定查詢或查詢的一部分可以用一個 MQT 來解決,那么就會重寫查詢,以便利用MQT。MQT可以在創(chuàng)建表時定義,或者定義為系統(tǒng)維護的MQT,或者定義為用戶維護的 MQT。
當(dāng)創(chuàng)建系統(tǒng)維護s的DB2物化視圖時,可以指定表數(shù)據(jù)是 REFRESH IMMEDIATE 還是 REFRESH DEFERRED。通過 REFRESH 關(guān)鍵字可以指定如何維護數(shù)據(jù)。DEFERRED 的意思是,表中的數(shù)據(jù)可以在任何時候通過 REFRESH TABLE 語句來刷新。不管是 REFRESH DEFERRED 還是 REFRESH IMMEDIATE 類型的系統(tǒng)維護的 MQT,對它們的 insert、update 或 delete 操作都是不允許的。但是,對于 REFRESH IMMEDIATE 類型的系統(tǒng)維護的 MQT,可以通過 對底層表的更改(即 insert、update 或 delete 操作)來更新。
- create table course_query as
- (
- select courseware_id, other_courseware_name from
- (
- select distinct courseware_id, other_courseware_name
- from metadata
- where other_courseware_name in
- (
- select distinct Other_courseware_name
- from METADATA
- where is_delete like '0'
- )
- )
- )
- data initially deferred refresh deferred;
- refresh table course_query;
【編輯推薦】