質問

約2億行と〜15列のテーブルがあります。私はaを作成することを計画しています COLUMNSTORE 私のテーブルのインデックス。

ColumnStoreインデックスで使用する列の順序に基づいて、パフォーマンスに変更がありますか?はいの場合、その背後にあるロジックは何ですか?

役に立ちましたか?

解決

いいえ、注文は関係ありません。各列は個別に見なされます。

SQL Serverチームから (強調が追加されました):

通常、テーブルのすべての列をColumnStoreインデックスに入れたいと思うでしょう。 列をリストする順序は関係ありません 列ストアインデックスには、Bツリーインデックスのようなキーがないためです。内部的には、データが自動的に再注文され、最高の圧縮が得られます。

他のヒント

順序は問題ではありません、列ストアインデックスのベーステーブルのすべての列を含める必要がある場合は何が重要ですか?この質問に対する以前の回答から詳細 ここ

SQL Server 2012-2016では、セグメント除去の概念があります(http://social.technet.microsoft.com/wiki/contents/articles/5651.understanding-segment-elimination.aspx)そして、実際には、少なくとも1列(各パーティション内に1つの追加)の順序を強制できます。

より良いセグメント除去のためのデータの読み込みを説明する次の記事を考えてみましょう。 より良いセグメント除去のためのデータ読み込み

存在しています アーロンによる素晴らしい答え 2012年からそれを拡大するために...

SQL 2014+を使用すると、Clustered ColumnStoreインデックスを利用できます。クラスター化されたcolumnStoreインデックスを作成するとき、列の選択または注文オプションはありません。 説明されている列ストアのインデックス

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top