SQL Server テーブルで非クラスター化列ストア インデックスを使用するための主要なタスクについて説明します。
列ストア インデックスの概要については、「 列ストア インデックスの説明」を参照してください。
クラスター化列ストア インデックスの詳細については、「 クラスター化列ストア インデックスの使用」を参照してください。
内容
非クラスター化列ストア インデックスを作成する
非クラスター化列ストア インデックスにデータを読み込むには、まず、ヒープまたはクラスター化インデックスとして格納されている従来の行ストア テーブルにデータを読み込み、次に CREATE COLUMNSTORE INDEX (Transact-SQL) を使用して列ストア インデックスを作成します。
非クラスター化列ストア インデックスのデータを変更する
テーブルに非クラスター化列ストア インデックスを作成すると、そのテーブル内のデータを直接変更することはできません。 INSERT、UPDATE、DELETE、または MERGE を使用したクエリは失敗し、エラー メッセージが返されます。 テーブル内のデータを追加または変更するには、次のいずれかの操作を行います。
列ストア インデックスを無効にします。 その後、テーブル内のデータを更新できます。 列ストア インデックスを無効にした場合は、データの更新が完了したときに列ストア インデックスを再構築できます。 例えば次が挙げられます。
ALTER INDEX mycolumnstoreindex ON mytable DISABLE; -- update mytable -- ALTER INDEX mycolumnstoreindex on mytable REBUILD列ストア インデックスを削除し、テーブルを更新してから、CREATE COLUMNSTORE INDEX を使用して列ストア インデックスを再作成します。 例えば次が挙げられます。
DROP INDEX mycolumnstoreindex ON mytable -- update mytable -- CREATE NONCLUSTERED COLUMNSTORE INDEX mycolumnstoreindex ON mytable;列ストア インデックスがないステージング テーブルにデータを読み込みます。 ステージング テーブルに列ストア インデックスを作成します。 ステージング テーブルをメイン テーブルの空のパーティションに切り替えます。
列ストア インデックスを持つテーブルから空のステージング テーブルにパーティションを切り替えます。 ステージング テーブルに列ストア インデックスがある場合は、列ストア インデックスを無効にします。 すべての更新を実行します。 列ストア インデックスをビルド (または再構築) します。 ステージング テーブルをメイン テーブルの (現在は空の) パーティションに切り替えます。