あるシステム管理者が、複数の部門から頻繁に参照される複雑な結合クエリ(数テーブルを JOIN した集計クエリ)を、毎回 SQL を書かずに再利用可能な形で保存したいと考えている。最も適切な方法はどれか。
- A. クラスター化インデックスを作成してクエリ結果を事前に整列させる
- B. ビュー(VIEW)を作成して複雑なクエリを仮想テーブルとして保存する
- C. ストアドプロシージャを使って SQL を実行形式で保存する
- D. 新しいテーブルを作成してクエリ結果を物理的に保存する
解答と解説を見る
正解: B
ビューは SELECT 文を名前付きで保存した仮想テーブルである。ユーザーはビュー名に対して SELECT するだけで複雑な JOIN や集計ロジックを意識せずにデータにアクセスできる。再利用性・保守性・セキュリティ(特定カラムのみ公開可能)の観点で最適である。ストアドプロシージャは SQL を手続きとして保存するが、パラメーター処理や複雑なロジックに向いており、単純な読み取り再利用にはビューの方がシンプルである。クラスター化インデックスはデータの物理的な並べ替えであり、クエリ再利用の仕組みではない。新テーブルへのデータ保存は元データとの同期が必要となり、メンテナンスコストが高い。