PostgreSQL ビュー、マテリアライズドビュー

ビュー

https://www.postgresql.jp/document/11/html/sql-createview.html
https://www.postgresql.jp/document/11/html/sql-dropview.html
https://www.postgresql.jp/document/11/html/sql-alterview.html

  • 作成
    • CREATE VIEW ビュー名 [ ( 列名 ) ] AS SELECT文;
  • 削除
    • DROP VIEW ビュー名;

ビューを作成する場合、ビューの元となるテーブルに対してSELECT権限が必要である。
ビューを参照する場合、ビューに対してSELECT権限が必要である。

  • ver9.3以降では以下の条件を満たすビューに対して更新処理が可能
    • 複数テーブルの結合を行っていないこと
    • 集約関数を使用していないこと

マテリアライズドビュー

https://www.postgresql.jp/document/11/html/sql-creatematerializedview.html
https://www.postgresql.jp/document/11/html/sql-dropmaterializedview.html
https://www.postgresql.jp/document/11/html/sql-altermaterializedview.html
https://www.postgresql.jp/document/11/html/sql-refreshmaterializedview.html

  • 作成
    • CREATE MATERIALIZED VIEW マテリアライズドビュー名 AS SELECT文 [ WITH [ NO ] DATA ];
      • WITH DATA:マテリアライズドビューの作成時にデータを投入する
      • WITH NO DATA:マテリアライズドビューの作成時にデータを投入しない
  • 削除
  • 更新
    • REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] マテリアライズドビュー名 [ WITH [ NO ] DATA ];
      • CONCURRENTLY:マテリアライズドビューの更新中もSELECT処理をブロックしない

インデックスを作成することができる。
ビューを定義するSQL文にORDER BY句を使用できる。
データが投入されていない場合、取得時にエラーになる。