約2億行と約15列のテーブルがあります。テーブルにCOLUMNSTORE
インデックスを作成する予定です。
列ストアインデックスで使用する列の順序に基づいてパフォーマンスに変化はありますか?はいの場合、その背後にあるロジックは何ですか?
いいえ、順序は関係ありません。各列は個別に考慮されます。
SQL Serverチームから (強調を追加):
通常、テーブル内のすべての列を列ストアインデックスに配置します。 列ストアインデックスにはBツリーインデックスのようなキーがないため、列をリストする順序は関係ありません。内部的には、最適な圧縮を得るためにデータが自動的に並べ替えられます。
順序は関係ありません。ベーステーブルのすべての列を列ストアインデックスに含める必要がある場合はどうでしょうか。この質問に対する以前の回答の詳細 here
既存の Aaronによる素晴らしい回答 が2012年からあります。それを拡張するには...
SQL 2014+では、クラスター化された列ストアインデックスを利用できます。クラスター化列ストアインデックスを作成する場合、使用できる列の選択や順序のオプションはありません。 列ストアインデックスの説明
SQL Server 2012-2016では、セグメント削除の概念( http://social.technet.Microsoft.com/wiki/contents/articles/5651.understanding-segment-elimination.aspx )と実際には、少なくとも1列の順序を強制できます(各パーティション内にさらに1列追加)。
セグメントを削除するためのデータの読み込みについて説明している次の記事を検討してください。 セグメントを削除するためのデータ読み込み