2010-10-09 84 views
5

SQL Server 2005包含「覆蓋索引」功能,它允許我們選擇多個非關鍵列以包含到現有的非聚集索引中。複合非聚集索引與覆蓋索引之間的區別是什麼

例如,我有以下的列:

EmployeeID, DepartmentID, DesignationID, BranchID 

這裏有兩種情況:

  • EmployeeID是 聚集索引和剩餘 列(DepartmentIDDesignationID主鍵, BranchID)被視爲非聚集 索引(複合索引)。

  • EmployeeID是 聚集索引主鍵和DepartmentID是用於非聚集索引 非聚集索引與 DesignationIDBranchID被「列入 列」。

以上兩者有什麼區別?如果兩者都相同,引入「覆蓋指數」概念的新內容?

+0

可能與http://stackoverflow.com/questions/1307990/why-use-the-include-clause-when-creating-an-index複製一個非聚集索引 – 2010-10-10 15:10:23

回答

3

區別在於,如果在第一個索引中有兩個具有相同DepartmentID的行,它們將根據它們的DesignationID和BranchID的值進行排序。在第二種情況下,它們不會相對於彼此進行排序,並且可以按照索引中的任何順序出現。

在這是什麼意思你的應用方面:

  • 它可以使用(DepartmentID的,DesignationID)索引可以以比第二,第一查詢更高效的查詢。
  • 由於需要進行額外的排序,構建第一個索引可能需要稍微延長一點。
相關問題