PostgreSQL

PostgreSQLビュー入門|複雑なクエリを再利用する

PostgreSQL ビュー VIEW

PostgreSQLビュー入門
複雑なクエリを再利用する

PostgreSQLのビューとマテリアライズドビューの作成・管理方法を解説します。

こんな人向けの記事です

  • 複雑なクエリを簡略化したい人
  • ビューとマテリアライズドビューの違いを知りたい人

Step 1ビューとは

ビューは保存されたSQLクエリで、仮想テーブルのように使用できます。データは保持せず、アクセスするたびにクエリが実行されます。

メリット: 複雑なクエリの簡略化、データアクセスの一貫性確保、セキュリティ向上(特定カラムのみ公開)に役立ちます。

Step 2ビューの作成

SQL
-- 基本的なビュー
CREATE VIEW active_users AS
    SELECT user_id, username, email
    FROM users
    WHERE is_active = TRUE;

-- ビューの使用(通常のテーブルと同じ)
SELECT * FROM active_users;

-- ビューの更新(元のSELECTを変更)
CREATE OR REPLACE VIEW active_users AS
    SELECT user_id, username, email, created_at
    FROM users
    WHERE is_active = TRUE;

Step 3マテリアライズドビュー

通常のビューと異なり、クエリ結果を物理的に保存します。集計処理が重いクエリに有効です。

SQL
-- マテリアライズドビューの作成
CREATE MATERIALIZED VIEW monthly_sales AS
    SELECT
        date_trunc('month', order_date) AS month,
        SUM(amount) AS total_sales
    FROM orders
    GROUP BY date_trunc('month', order_date)
    WITH DATA;

-- データの更新(手動で実行が必要)
REFRESH MATERIALIZED VIEW monthly_sales;

注意: マテリアライズドビューは自動更新されません。データの鮮度が必要な場合は定期的にREFRESHを実行してください。

Step 4ビューの管理

SQL
-- ビューの一覧表示
\dv

-- ビューの定義を確認
\d+ ビュー名

-- ビューの削除
DROP VIEW active_users;

-- マテリアライズドビューの削除
DROP MATERIALIZED VIEW monthly_sales;