DB2物化視圖(Materialized Query Tables, MQT),materializedmqt

來源:互聯網
上載者:User

DB2物化視圖(Materialized Query Tables, MQT),materializedmqt

DB2的物化視圖MQT是基於查詢結果定義的一個表,MQT中包含的資料來自MQT定義所基於的一個或多個表, 使用MQT可以顯著提高查詢的操作效能。

資料庫的視圖和MQT都是基於一個查詢來定義的。每當視圖被引用時,視圖所基於的查詢便會運行。但MQT實際上會將查詢結果儲存為資料,您可以使用MQT中的這些資料,而不是使用底層表中的資料。

MQT 可以顯著提高查詢的效能,尤其是提高複雜查詢的效能。如果最佳化器確定查詢或查詢的一部分可以用一個 MQT 來解決,那麼查詢就可以被重寫以便利用 MQT。MQT 可以在建立表時定義,可以定義為由系統維護,也可以定義為由使用者維護。

DATA INITIALLY DEFERRED 子句的意思是,在執行 CREATE TABLE 語句的時候,並不將資料插入到表中。
MQT 被建立好之後,就會處於檢查暫掛(check pending)狀態,在對它執行 SET INTEGRITY 語句之前,不能查詢它。IMMEDIATE CHECKED 子句指定,必鬚根據用於定義該 MQT 的查詢對資料進行檢查,並重新整理資料。NOT INCREMENTAL 子句指定對整個表進行完整性檢查。

這種 MQT 中的資料是由系統維護的。當建立這種類型的 MQT 時,可以指定表資料是 REFRESH IMMEDIATE 還是 REFRESH DEFERRED。通過 REFRESH 關鍵字可以指定如何維護資料。DEFERRED 的意思是,表中的資料可以在任何時候通過 REFRESH TABLE 語句來重新整理。

系統維護的 MQT,不管是 REFRESH DEFERRED 類型的還是 REFRESH IMMEDIATE 類型的,對它們的插入、更新或刪除操作都是不允許的。但是,對於 REFRESH IMMEDIATE 類型的系統維護的 MQT,可以通過 對底層表的更改(即插入、更新或刪除操作)來更新。

下面看一個例子

首先建立原始表

CREATE TABLE T (   ID                INTEGER  NOT NULL,   COL1              VARCHAR(128),   COL2              VARCHAR(128),   COL3              VARCHAR(128),   COL4              VARCHAR(128),   COL5              VARCHAR(128),   PRIMARY KEY (ID)) ORGANIZE BY ROW;

建立MQT表

CREATE TABLE T_MQT ( ID, COL1, COL2, COL3 ) AS ( select ID, COL1, COL2, COL3  from T ) DATA INITIALLY DEFERRED REFRESH IMMEDIATE MAINTAINED BY SYSTEM;SET INTEGRITY FOR T_MQT IMMEDIATE CHECKED FULL ACCESS;


寫入資料到原始表中

insert into T(ID, COL1, COL2, COL3, COL4, COL5) values (1, 'col1', 'col2', 'col3', 'col4', 'col5');insert into T(ID, COL1, COL2, COL3, COL4, COL5) values (2, 'col1', 'col2', 'col3', 'col4', 'col5');

查詢原始表和MQT表,會發現在MQT表裡也有資料了

select * from T;select * from T_MQT;

原文連結:DB2物化視圖(Materialized Query Tables, MQT)


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.