テーブルとどう違うの?
テーブルは実際にデータが格納されている実体。ビューはSQLクエリの定義だけを保存する仮想テーブルで、データの実体を持たない。ビューにSELECTすると、内部で定義されたクエリが実行されてその結果が返る。CREATE VIEW active_users AS SELECT * FROM users WHERE status = 'active'; のように定義するよ
どんなときに使う?
①複雑なJOINクエリを何度も書くのを避ける(5テーブル結合のクエリをビュー化)、②アクセス制御(給与テーブルの個人名だけ見せるビューを作る)、③アプリケーション層とテーブル構造を分離(テーブルを変更してもビューのインターフェースを維持)。レポート用のビューは特によく使われるよ
パフォーマンスは大丈夫?
ビューは毎回クエリを実行するから、複雑なクエリだとパフォーマンスが問題になることがある。対策として①インデックスが効くようにビューのクエリを最適化、②マテリアライズドビュー(結果を実体化して保存)を使う、③データウェアハウスでは事前集計テーブルを用意。用途に応じて使い分けようね
ビューの更新はできる?
単純なビュー(1テーブル、集約なし)ならINSERT/UPDATE/DELETEが可能で、実テーブルに反映される。JOINや集約を含むビューは読み取り専用。INSTEAD OFトリガーを使えば更新可能にもできるが複雑になる。一般的にはビューは読み取り用と割り切って、更新は直接テーブルに対して行う方がシンプルだよ