追加コスト 0 で行う SQL Server のパフォーマンス改善・ボトルネック解消 その3 | 野良エンジニアの足跡

追加コスト 0 で行う SQL Server のパフォーマンス改善・ボトルネック解消 その3

こんにちは、nagino です。


需要があるのかないのか分かりませんが、未整理に思いつくものから触れていく本シリーズ、3 回目です。


使える Edition に制限があったりするのですが、今日はインデックス付きビューについてです。

これは、作り方としてはビューにインデックスを付与するようなイメージなのですが、ビューとは名ばかりの実体のある表です。

例えば階層構造の部署に関して、関連する表を結合して利用することが多い場合、あらかじめ結合済みのインデックス付きビューを用意しておくと、検索時に結合処理が不要になるため高速化ができます。

ただし、実体が作られるために、更新時のパフォーマンス低下と、ディスク容量が必要になります。


使いどころはその特徴から分かるとおり、更新頻度が低いが結合して使用することが多いマスタや、更新頻度はほどほどであってもとにかく検索速度が求められる状況です。

ただし、特定クエリ毎に最適なインデックス付きビューを用意していくと、データがキャッシュに乗らなくなりますし、ディスク容量の増加によるディスク I/O の速度低下もおきますので、使いどころかどうかよく検討する必要があります。