マテリアライズド・ビュー

マテリアライズド・ビューとは、ひとつ以上の表(又はビュー、のマテリアライズド・ビュー)を問い合わせた結果を含むスキーマオブジェクトである。マテリアライズド・ビューの基となる表のことをマスター表と呼ぶ。参照を行なうたびに実表を問い合わせるビューと異なり、マスター表への問い合わせ結果を含んでいるため、参照を高速に行なえる。ただし、更新は遅くなる。

表、ビュー及びマテリアライズド・ビューの違い
操作 ビュー マテリアライズド・ビュー
SELECT
INSERT ✓(制限あり)
UPDATE ✓(制限あり)
DELETE ✓(制限あり)
主キーの作成
インデックスの作成

SQL

マテリアライズド・ビューを操作するSQL文の一覧を次に示す。

CREATE MATERIALIZED VIEW
マテリアライズド・ビューを作成する。
ALTER MATERIALIZED VIEW
マテリアライズド・ビューを変更する。
DROP MATERIALIZED VIEW
マテリアライズド・ビューを削除する。

権限

マテリアライズド・ビューを操作するのに必要なシステム権限の一覧を次に示す。

マテリアライズドビューに関するデータディクショナリビュー一覧
システム権限 説明
CREATE MATERIALIZED VIEW 自分のスキーマ内でマテリアライズドビューを作成、変更、削除できる。
CREATE ANY MATERIALIZED VIEW 他のユーザのスキーマ内にマテリアライズドビューを作成できる。
ALTER ANY MATERIALIZED VIEW 他のユーザのスキーマ内にあるマテリアライズドビューを変更できる。
DROP ANY MATERIALIZED VIEW 他のユーザのスキーマ内にあるマテリアライズドビューを削除できる。
CREATE TABLE いずれかのテーブル作成権限が必要である。
CREATE ANY TABLE
SELECT ANY TABLE 他のユーザのスキーマ内にあるテーブルをマスター表にできる。

データディクショナリ・ビュー

マテリアライズド・ビューに関するデータ・ディクショナリ・ビューの一覧を次に示す。

ALL_MVIEWS
現在のユーザがアクセスできるマテリアライズド・ビューを示すデータ・ディクショナリビュー
DBA_MVIEWS
データベース内すべてのマテリアライズド・ビューを示すデータ・ディクショナリビュー
USER_MVIEWS
現在のユーザが所有するマテリアライズド・ビューを示すデータ・ディクショナリビュー

マテリアライズド・ビューを定義する問い合わせを確認する例を示す。

SQL> SELECT QUERY FROM USER_MVIEWS WHERE MVIEW_NAME = 'example';

マテリアライズド・ビューをリフレッシュする

マテリアライズド・ビューを手動でリフレッシュするには、SQL*PlusのEXECUTEコマンドでDBMS_MVIEWパッケージのREFRESHプロシージャを実行する。

EXECUTE DBMS_MVIEW.REFRESH(name)
EXECUTE DBMS_MVIEW.REFRESH(name, method)
name

リフレッシュするマテリアライズド・ビューを指定する。

method

リフレッシュ方法を指定する。

方法 説明
c 完全リフレッシュ
f 高速リフレッシュ
? 強制リフレッシュ

マテリアライズド・ビューの元となるマスター・マテリアライズド・ビューをDROP MATERIALIZED VIEWで削除すると、マテリアライズド・ビューのリフレッシュはエラーになる。 マスター・マテリアライズド・ビューを一度削除すると、CREATE MATERIALIZED VIEWで同じ名前のマスター・マテリアライズド・ビューを作成しても、マテリアライズド・ビューのリフレッシュはエラーになる。

マテリアライズド・ビューを手動でリフレッシュする例を示す。

SQL> EXEC DBMS_MVIEW.REFRESH('mview1', 'c');

マテリアライズド・ビュー・ログ

マテリアライズド・ビュー・ログとは、マテリアライズド・ビューの基となるマスター表への変更を格納するスキーマオブジェクトである。マテリアライズド・ビュー・ログがある場合、マテリアライズド・ビュー・ログを使用してマテリアライズド・ビューがリフレッシュされる。これを増分リフレッシュ又は高速リフレッシュと呼ぶ。

マテリアライズド・ビューを高速リフレッシュするためには、マテリアライズド・ビュー・ログを作成する必要がある。

SQL

マテリアライズド・ビュー・ログを操作するSQL文の一覧を次に示す。

CREATE MATERIALIZED VIEW LOG
マテリアライズド・ビュー・ログを作成する。
ALTER MATERIALIZED VIEW LOG
マテリアライズド・ビュー・ログを変更する。
DROP MATERIALIZED VIEW LOG
マテリアライズド・ビュー・ログを削除する。