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