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