10

SQL Server テーブル用に作成された複数列の非クラスター化インデックスの列の順序は本当に重要ですか?

例:

CREATE NONCLUSTERED INDEX [MultiFieldIndex_1]  
ON [Table_01] ([Column_A],[Column_B],[Column_C],[Column_D])

と同じ

CREATE NONCLUSTERED INDEX [MultiFieldIndex_1]  
ON [Table_01] ([Column_D],[Column_C],[Column_B],[Column_A]) 

?

4

1 に答える 1

13

はい、重要です!

クエリにそのインデックスの左端の n列が含まれている場合、そのインデックス使用されることがあります。

したがって、 index の最初のバージョンでは、次のMultiFieldIndex_1場合に使用される可能性があります

  • 4 つの列すべてを使用する
  • 列A、B、Cを使用
  • 列A、Bを使用
  • 列Aを使用

ただし、使用する場合は考慮されません

  • D列だけ
  • C列とD列など

ただし、 , またはおよび-のみを指定すると、インデックスの 2 番目のバージョンが使用される可能性がありますが、 および のみを指定した場合は決して使用されません。DDCAB

インデックスで定義されているすべての列を常に使用する場合にのみ、それらが定義されている順序は (ほとんど) 無関係になります (最高の選択性などによる順序付けにはまだいくつかのニュアンスがありますが、それらは事実よりもはるかに重要ではありません)。ステートメントで左端の n 列を指定しない場合、インデックスは使用されません)。SELECT

于 2015-02-12T11:27:15.037 に答える