非クラスター化列ストア インデックスの使用
SQL Server テーブルで非クラスター化列ストア インデックスを使用するための主要なタスクについて説明します。
列ストア インデックスの概要については、「 列ストア インデックスの説明」を参照してください。
クラスター化列ストア インデックスの詳細については、「クラスター化 列ストア インデックスの使用」を参照してください。
内容
非クラスター化 Columnstore インデックスの作成
非クラスター化列ストア インデックスにデータを読み込むには、まず、ヒープまたはクラスター化インデックスとして格納されている従来の行ストア テーブルにデータを読み込み、次に CREATE COLUMNSTORE INDEX (Transact-SQL) を使用して列ストア インデックスを作成します。
非クラスター化 Columnstore インデックスでのデータの変更
テーブルに非クラスター化列ストア インデックスを作成すると、そのテーブル内のデータは変更できなくなります。 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;
列ストア インデックスのないステージング テーブルにデータを読み込みます。 そのステージング テーブルに列ストア インデックスを構築します。 そのステージング テーブルをメイン テーブルの空のパーティションに切り替えます。
列ストア インデックスを持つテーブルから空のステージング テーブルにパーティションを切り替えます。 ステージング テーブルに列ストア インデックスがある場合は、列ストア インデックスを無効にします。 更新を実行します。 列ストア インデックスを構築 (または再構築) します。 ステージング テーブルを切り替えて、メイン テーブルの (空になった) パーティションに戻します。