技術情報ログ

列ストアインデックスとは Columnstore indexes MS SQL Server 2012

-- 列ストアインデックスの作成
CREATE NONCLUSTERED COLUMNSTORE INDEX INDEXNAME ON TABLENAME (COLUMNNAME, COLUMNNAME)

列ストアインデックスは「インデックス」の名前が示す通り、参照性能を向上させる機能だ。通常のB-Tree形式のインデックスではなくインメモリの列ベースエンジンによって実現されている。

列ストアインデックスはシンプルで大容量、更新することが少ないテーブルの操作に向いている。

イメージは、格納されているデータのうち、必要な列のデータだけをダイレクトに取り出してメモリに保持して参照性能を向上させる感じ。

列ストアインデックスが存在していれば、クエリオプティマイザが働いて列ストアインデックスの使用・不使用のどちらの効率が良いかを最適化してくれる。これは今までと同様。

注意点は、列ストアインデックスが有効になっている状態ではテーブルの更新ができないこと。列ストアインデックスが有効なまま更新処理を行うとエラーが発生する。なので、INSERT/UPDATE/DELETEを行うときは、一度列ストアインデックスを無効にする処理を行う必要がある。

列ストアインデックスを適切に使用すると、理論的には25~100倍の高速化が見込まれる。


スポンサードリンク