ビュー・マテリアライズドビューとは?SELECTの結果を表のように扱える『仮想表』

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

ビューとは(全体像)

ビューとは、SELECT(データを検索する命令)の結果を、1つの表のように名前を付けて扱えるようにしたものだよー。中身の実データは元の表にあって、ビュー自身はデータを持たないのー。だから「仮想表(バーチャルな表)」と呼ばれるよー。

身近にたとえると、エクセルでよく使う「絞り込みの見え方」をブックマークしておく感じ。元データは1つの大きな表にあって、ビューは「その見え方」を覚えているだけ。元が変われば、見え方も自然と変わるよー。

押さえるのは、通常ビュー(常に最新)マテリアライズドビュー(保存して速い)の2つだよー。


詳しく:2つのビューの違いと用途だけ覚えれば戦える

ここが記事の心臓部。まず2つのビューの違いを見ていこーね。

通常ビュー と マテリアライズドビュー

通常ビューマテリアライズドビュー
データの持ち方持たない(見るたびに計算)結果を物理的に保存しておく
最新かどうか常に最新保存した時点のもの(最新化に手間)
検索の速さそのつど計算するので遅め保存ずみなので速い
使いどころふだんの絞り込み集計やデータ分析(DWH)

通常ビューは見るたびに計算するから常に最新マテリアライズドビューは結果を保存ずみだから検索が速い——この対比が一番大事だよー。マテリアライズドビューはPostgreSQLやOracle、SQL Serverで使えるけれど、MySQLは対応していないのー。

次に、ビューの用途だよー。

ビューの主な用途

用途内容
セキュリティ見せたい列だけに絞ってアクセスさせる
複雑な検索のまとめややこしい検索を1つの名前にまとめる(カプセル化)
互換性の維持表の作りが変わっても、ビューの見え方を保つ

ここでひっかけが「ビューはぜんぶ書き換え(更新)できる」という誤解だよー。更新できるのは、1つの表から素直に作った単純なビューだけ。複数の表をつなげたり(JOIN)、集計(合計や件数)を含むビューは更新できないのー。

わかりやすく言い換えると

要するに、エクセルの保存フィルタでイメージするとラクだよー。

通常ビュー … 絞り込みの「見え方」を保存(元が変わると自動で最新になる)

マテリアライズドビュー … その見え方を「写真に撮って保存」(だから表示は速い・でも元が変わっても写真は古いまま)

更新できるビュー … 元の表をそのまま映しているような単純なビューだけ

つまり、「通常=常に最新」「マテリアライズド=保存して速い」「データは持たない仮想表」、この3点が試験の急所なのー。


試験のツボ

🔴 一番出る:2つのビューの対比

①通常ビュー = 見るたびに計算・常に最新

②マテリアライズドビュー = 結果を保存・検索が速い(MySQLは非対応)

🔴 次に出る:ビューはデータを持たない仮想表

①実データは元の表にあり、ビュー自身は持たない

②だから「テーブル」とは別物

🟡 押さえると安定:用途と更新の制限

①用途はセキュリティ・複雑な検索のまとめ・互換性維持

②更新できるのは単純な構造のビューだけ(JOINや集計を含むと不可)


よくある間違い

「ビューはテーブルと同じで、実データを持っている」→ ✗  ビューはデータを持たない仮想表。実データは元の表にある。

「どんなビューでも自由に書き換え(更新)できる」→ ✗  更新できるのは単純な構造のビューだけ。JOINや集計を含むと更新できない。

「マテリアライズドビューはどのデータベースソフトでも使える」→ ✗  PostgreSQL・Oracle・SQL Serverは対応するが、MySQLは非対応。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(ビューとは)

📝 オリジナル問題 1 ビューの本質

ビューに関する次の記述のうち、正しいものはどれか。

  1. ビューは画面を必ず明るく表示するためだけに使う専用の設定のことだとされているものなのである
  2. ビューは音を必ず大きく鳴らすためだけに使う専用の機能のことだとされているもの
  3. ビューはSELECTの結果を表のように扱える仮想表で、実データは持たないものである
  4. ビューは保存した文字を必ず全部消すための専用の命令のことだとされているものである
データスラ
データスラ 解答・解説

解答は 3 だよー。

ビューは、SELECT(検索)の結果を1つの表のように扱える仮想表で、実データは持たないのー。実データは元の表にあって、ビューは「見せ方」を覚えているだけだよー。

選択肢1の「明るく表示」、選択肢2の「大きく鳴らす」、選択肢4の「全部消す命令」はどれも誤りなのー。

選択肢判定理由
1画面の明るさの設定ではない
2音を鳴らす機能ではない
3SELECTの結果を扱う仮想表で実データは持たない
4文字を消す命令ではない

オリジナル問題2(マテリアライズドビュー)

📝 オリジナル問題 2 マテリアライズドビュー

マテリアライズドビューに関する次の記述のうち、正しいものはどれか。

  1. マテリアライズドビューは結果を物理的に保存しておくので検索が速く、集計などで活用される
  2. マテリアライズドビューはデータをまったく保存せず必ず毎回いちから計算するものだとされているのだ
  3. マテリアライズドビューは画面を必ず点滅させるための専用の設定だとされている
  4. マテリアライズドビューは音を必ず二重に鳴らすための専用の機能のことだとされているのである
データスラ
データスラ 解答・解説

解答は 1 だよー。

マテリアライズドビューは、結果を物理的に保存しておくから検索が速いのー。集計やデータ分析(DWH)でよく活用されるよー。そのかわり、最新の状態に保つには手間がかかるんだよー。

選択肢2の「まったく保存しない」は通常ビューの説明で誤りなのー。選択肢3の「点滅」、選択肢4の「二重に鳴らす」も関係ないよー。

選択肢判定理由
1結果を保存するので検索が速い
2保存するのがマテリアライズドの特徴
3点滅させる設定ではない
4音を鳴らす機能ではない

オリジナル問題3(更新できるビュー)

📝 オリジナル問題 3 更新できるビューの条件

ビューの更新に関する次の記述のうち、正しいものはどれか。

  1. ビューはどんな作りであっても必ず自由に書き換え(更新)ができるものだとされている
  2. ビューを更新できるのは、1つの表から素直に作った単純な構造のビューだけに限られる
  3. ビューは複数の表をつなげたものや集計を含むものほどかえって更新しやすくなるとされている
  4. ビューの更新ができるかどうかは、画面の明るさの設定だけで決まるものだとされる
データスラ
データスラ 解答・解説

解答は 2 だよー。

ビューを書き換え(更新)できるのは、1つの表から素直に作った単純な構造のビューだけなのー。複数の表をつなげたり(JOIN)、集計を含むビューは更新できないんだよー。

選択肢1の「どんな作りでも更新できる」、選択肢3の「JOINや集計だと更新しやすい」は誤りなのー。選択肢4の「明るさで決まる」も関係ないよー。

選択肢判定理由
1単純な構造のビューに限られる
2単純な構造のビューだけ更新できる
3JOINや集計を含むと更新できない
4画面の明るさとは関係ない

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る