ある開発チームが Azure SQL Database を使用して注文管理システムを構築している。商品テーブル(products)と注文明細テーブル(order_items)があり、商品カテゴリ別の売上合計を集計するクエリを頻繁に実行している。この集計クエリを毎回 SQL を記述せずに名前で呼び出せるようにしたい。最も適切なアプローチはどれか。
- A. 集計クエリをクラスター化インデックスとして定義してデータを事前集計済みにする
- B. 集計クエリを Azure SQL Database の外部ストレージに SQL ファイルとして保存して毎回ロードする
- C. GROUP BY を含む集計クエリをビュー(VIEW)として作成し、ビュー名で参照できるようにする
- D. 集計結果を新しい summary テーブルに INSERT INTO SELECT で定期的に保存する
解答と解説を見る
正解: C
ビューは SELECT 文(集計クエリを含む)を名前付きで保存した仮想テーブルである。GROUP BY や集計関数を含む複雑なクエリをビューとして定義すれば、利用者はビュー名に対して単純な SELECT を発行するだけで集計結果を得られる。クエリの再利用性とメンテナンス性が向上する。集計結果を summary テーブルに保存する方法は元データとの同期が課題となり、タイムラグによるデータ不整合が生じる。クラスター化インデックスはデータの物理的な並べ替えであり、集計クエリを定義するものではない。SQL ファイルの外部保存はデータベース機能の活用ではなく、呼び出しの簡略化にならない。