Oracle Materialized View
一般のビューとは違い、実体そのものを持つビューの事らしい...。とりあえず調べた結果をメモ
テーブルを作成
CREATE TABLE SAMPLE_TBL(
ID NUMBER(10),
NAME VARCHAR2(100),
AGE NUMBER(8)
);
権限を付加する
GRANT CREATE MATERIALIZED VIEW TO hoge;
マテリアライズド・ビューログを作成
CREATE MATERIALIZED VIEW LOG ON SAMPLE_TBL
WITH
ROWID,
sequence(ID,NAME,AGE)
INCLUDING NEW VALUES;
ビューを作成する
CREATE MATERIALIZED VIEW SAMPLE_MV
REFRESH FAST ON COMMIT AS
SELECT
ID,NAME,AGE
FROM
SAMPLE_TBL
WHERE
AGE < 20;
テーブルが更新されてもマテリアライズド・ビューには反映されないので、リフレッシュする際には
execute dbms_mview.refresh("SAMPLE_MV","f")
を実行する。dbms_mviewプロシージャのrefreshメソッドの第二パラメータはcの場合は完全リフレッシュ、fの場合は高速リフレッシュが行われる。最後にテーブルがSELECTされる際に自動的にビュー側が参照されるようにできる機能「Query Rewrite」を有効にするには
ALTER MATERIALIZED VIEW Mview_l_s_n ENABLE QUERY REWRITE;