ビュー
SELECT文を保持して、開いた際にSELECT文が実行されるイメージ。
データは元のテーブルと連動して自動的に最新の状態に更新される。
列に別名を付けることができる。
--作成 CREATE VIEW ビュー名 AS SELECT文; --作成(列別名) CREATE OR REPLACE VIEW ビュー名 (ビューで使用する列名 , ビューで使用する列名...) AS SELECT文; --削除 DROP VIEW ビュー名;
マテリアライズド・ビュー
SELECTの結果の実データを保持している。
リフレッシュ方法とタイミングを指定することができる。
--作成 CREATE MATERIALIZED VIEW ビュー名 AS SELECT文;
--作成(指定あり) CREATE MATERIALIZED VIEW ビュー名 リフレッシュ方法 リフレッシュタイミング AS SELECT文;
リフレッシュ方法
指定しない場合はforceになる。
後からリフレッシュ方法を変えることも出来る。
refresh complete | 完全リフレッシュ(全データを再計算し直す。) |
refresh fast | 高速リフレッシュ(更新のあった箇所だけを再計算する。) |
refresh force | デフォルト(高速リフレッシュ可能なら高速リフレッシュ、そうでないなら完全リフレッシュを実行する。) |
never refresh | リフレッシュしない(再計算しない。手動でのリフレッシュ指示も無効。) |
--リフレッシュ方法変更 ALTER MATERIALIZED VIEW ビュー名 リフレッシュ方法;
リフレッシュタイミング
指定しない場合はdemandになる。
on commit | コミット時 |
start with・next | 一定間隔(指定された時刻に再計算する。) |
on demand | 手動 |
--スケジュール更新 CREATE MATERIALIZED ビュー名 REFRESH FAST START WITH '2020/8/11' --初回の計算日時 NEXT SYSDATE + 1 --次回以降の計算日時 AS SELECT文;
--更新スケジュール確認 select last_date,last_sec,next_date,next_sec,interval,what from user_jobs;
--手動更新 --(マテビューで指定された方法(完全 or 高速)でリフレッシュ) EXEC DBMS_MVIEW.REFRESH('ビュー名') --完全リフレッシュ指定 EXEC DBMS_MVIEW.REFRESH('ビュー名', 'C') --高速リフレッシュ指定 EXEC DBMS_MVIEW.REFRESH('ビュー名', 'F')