6

SQL Server 2005 には、複数の非キー列を選択して既存の非クラスター化インデックスに含めることができる「カバリング インデックス」機能が含まれています。

たとえば、次の列があります。

EmployeeID, DepartmentID, DesignationID, BranchID

以下に 2 つのシナリオを示します。

  • EmployeeIDはクラスター化インデックスを持つ主キーであり、残りの列 ( DepartmentIDDesignationIDBranchID) は非クラスター化インデックス (複合インデックス) として取得されます。

  • EmployeeIDはクラスター化インデックスを持つ主キーであり、DepartmentIDは非クラスター化インデックスの非クラスター化インデックスであり DesignationID、非クラスター化インデックスBranchIDの「含まれる列」です。

上記の2つの違いは何ですか?両方が同じである場合、「カバリング インデックス」の概念を導入するための新機能は何ですか?

4

2 に答える 2

3

違いは、最初のインデックスに同じ DepartmentID を持つ 2 つの行がある場合、それらは DesignationID と BranchID の値に基づいて並べ替えられることです。2 番目のケースでは、それらは互いに相対的にソートされず、インデックスに任意の順序で表示される可能性があります。

これがアプリケーションにとって何を意味するかという点では:

  • (DepartmentID, DesignationID) のインデックスを使用できるクエリは、最初のクエリの方が 2 番目のクエリよりも効率的です。
  • 追加のソートが必要なため、最初のインデックスの作成には少し時間がかかる場合があります。
于 2010-10-09T17:56:59.550 に答える
0

カバーされたインデックスは、INCLUDE 句を含む非クラスター化インデックスです

于 2018-03-01T15:01:40.553 に答える