【Postgresql】マテリアライズドビュー
マテリアライズドビューとは
- 実行結果をテーブルと同じようにキャッシュして、普通のビューならテーブル結合などのコストをかけて実行するものを既に計算済みのデータを読むだけの状態にする機能。
- 実態はテーブルに似ていて、インデックスなどが張れる
- 一度キャッシュしたら、
REFLESH
しないとデータが更新されない
マテビューを作る
CREATE MATERIALIZED VIEW mate_view AS SELECT dept.dept_id, dept.dept_name, emp.emp_id, emp.emp_name FROM dept INNER JOIN emp USING (dept_id) ;
マテビューをリフレッシュする
手動実行
-- 占有ロックあり REFRESH MATERIALIZED VIEW mate_view; -- 占有ロックなし、更新/参照されたら都度都度リフレッシュとまる REFRESH MATERIALIZED VIEW CONCURRENTLY mate_view;
※Oracleには自動更新するオプションはあるが、Postgresql10.x現在そういうのはないらしい。