web-dev-qa-db-ja.com

テーブルにクラスター化列ストアインデックスと非クラスター化列ストアインデックスの両方を含めることはできますか?

テーブルにクラスター化列ストアインデックスと非クラスター化列ストアインデックスの両方を含めることはできますか?

非クラスター化バイナリ行インデックスのみでクラスター化列ストアインデックスを使用する方法の例を確認しています。

クラスター化列ストアと非クラスター化列ストアの両方を作成しようとすると、エラーが表示されます。

Msg 35339, Level 16, State 1, Line 7
Multiple columnstore indexes are not supported.
1
user158823

いいえ、できません:

CREATE TABLE dbo.cs_test (id INT NOT NULL)

CREATE CLUSTERED COLUMNSTORE INDEX cs_whatever ON dbo.cs_test

CREATE NONCLUSTERED COLUMNSTORE INDEX nc_whatever ON dbo.cs_test(id);

エラーメッセージを返します。

メッセージ35339、レベル16、状態1、行7複数の列ストアインデックスはサポートされていません。

複数の非クラスター化列ストアインデックスでも同じ結果が得られます。

3
Erik Darling

これを可能にする意味はほとんどありません。とにかく、列はインデックス内で順序付けされていません。必要なすべての列を1つの唯一のcol-storeインデックスに含めるだけです(または、クラスター化されている場合は、すべての列が既に含まれています)。

(いくつかのcol-storeインデックスが有益であると主張することができますif行グループの削除を実行する機能を制御するために、ビルドフェーズをよりよく制御できました。しかし、最終的には各行グループのmax-min値に関する統計がない限り、オプティマイザが使用するcol-storeインデックスを決定するのは困難です。col-storeインデックスの内部を調べていない限り、これはあまり意味がないかもしれませんあなたへ... :-) )

4
Tibor Karaszi