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;