【びゅー】
ビュー(DB) とは?
最終更新:
💡 SELECT文で決めた見方を、名前で使い回す
SELECT文の結果を、テーブルのように参照できる名前で定義する仕組み。通常のビューは結果の行を保存せず、参照時に元のテーブルに基づいて結果を求める。
📌 このページのポイント
単純なSELECT文でも定義できるよ。たとえば顧客表と注文表を結合した結果を注文一覧という名前で定義すれば、その名前をSELECTして使える。列の選択や絞り込みを、利用する側から扱いやすい名前にまとめられるんだ。
結果のデータが保存されるの?
通常のビューでは、定義した問い合わせを使い、参照時に元の表から結果を求めるよ。結果を保存するマテリアライズドビューとは区別しよう。PostgreSQLではREFRESH MATERIALIZED VIEWで保存結果を更新するので、更新するまでは元の表の変更が反映されないんだ。
見せたくない列を省けば安全?
列を省いたビューを作るだけでは十分とは限らないよ。利用者が元の表を直接読めるなら、省いた列も見えてしまう。PostgreSQLではビューや元の表の権限、実行時に誰の権限を使うかなどを確認し、利用者の権限で実際に見える範囲を確かめることが必要なんだ。
ビューを何段も重ねると必ず遅くなる?
段数だけでは決まらないよ。定義した問い合わせやデータ量などを見て判断する。マテリアライズドビューは保存結果を参照するので速くなる場合があるけれど、更新処理と結果の鮮度も考える必要がある。通常のビューより常に高速、という保証ではないんだ。
ビュー経由で元の表を更新できる?
製品や定義によるよ。PostgreSQLでは、単一の表などを参照し、集計やDISTINCTなどを含まない条件に合うビューは自動更新できる。一方、複数表の結合や集計を含むビューは、そのままでは更新できないことがある。すべて読み取り専用、すべて更新可能のどちらでもないんだ。
📖 おまけ:英語の意味
「View」 = 見る・見方・ビュー
💬 データの「特定の見方(view)」を定義したもの。同じデータでも部門別・用途別に異なるビューを作れる