具体化されたビューを作成します。

構文

CREATE MATERIALIZED VIEW name     [build_clause][create_mv_refresh] AS subquery

build_clause は次のとおりです。

BUILD {IMMEDIATE | DEFERRED}

create_mv_refresh は次のとおりです。

REFRESH [COMPLETE] [ON DEMAND]

説明 

CREATE MATERIALIZED VIEW は、ビューがクエリで参照されるたびに更新されないクエリのビューを定義します。 デフォルトでは、ビューの作成時にビューにデータが入力されます。 BUILD DEFERRED キーワードを含めると、データの入力を遅らせることができます。

具体化されたビューはスキーマで修飾できます。 CREATE MATERIALIZED VIEW コマンドの実行時にスキーマ名を指定すると、指定したスキーマにビューが作成されます。 ビュー名は、同じスキーマ内の他のすべてのビュー、テーブル、シーケンス、インデックスの名前とは異なる名前である必要があります。

具体化されたビューは読み取り専用です。 サーバーでは、ビューに対する INSERT、UPDATE、または DELETE 操作が許可されません。

ビューで参照されるテーブルへのアクセスは、ビューの所有者の権限によって決定されます。 ビューのユーザーは、ビューで使用されるすべての関数を呼び出す権限を持っている必要があります。

Postgres の REFRESH MATERIALIZED VIEW コマンドの詳細については、『PostgreSQL ドキュメント』をご参照ください。

パラメーター

パラメーター 説明 
name 作成するビューの名前。 名前はスキーマで修飾できます。
subquery ビューの内容を指定する SELECT 文。 有効なクエリの詳細については、 SELECT コマンドをご参照ください。
build_clause build_clause を含めて、ビューにデータが入力されるタイミングを指定します。 BUILD IMMEDIATE または BUILD DEFERRED を指定できます。
  • BUILD IMMEDIATE は、ビューにすぐにデータを入力するようサーバーに指示します。 これがデフォルトの動作です。
  • BUILD DEFERRED は、後で (REFRESH 操作中に) ビューにデータを取り込むようにサーバーに指示します。
create_mv_refresh 具体化されたビューのコンテンツがいつ更新されるかを指定するには、create_mv_refresh 句を含めます。 REFRESH キーワードの後に COMPLETE または ON DEMAND、あるいはその両方を指定します。
  • COMPLETE は、具体化されたビューの更新時にビューの定義クエリを実行して、現在のコンテンツを破棄し、具体化されたビューを再ロードするようサーバーに指示します。
  • ON DEMAND は、DBMS_MVIEW パッケージまたは Postgres REFRESH MATERIALIZED VIEW 文を呼び出すことにより、サーバーにオンデマンドで具体化されたビューを更新するように指示します。 これがデフォルトの動作です。

次の SQL 文は、dept_30 という名前の具体化されたビューを作成します。

CREATE MATERIALIZED VIEW dept_30 BUILD IMMEDIATE AS SELECT * FROM emp WHERE deptno = 30;

ビューには、emp テーブルから取得した、部門 30 で働くすべての従業員に関する情報が含まれます。