复合非聚簇索引和覆盖索引之间有什么区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复合非聚簇索引和覆盖索引之间有什么区别相关的知识,希望对你有一定的参考价值。
SQL Server 2005包括“覆盖索引”功能,该功能允许我们选择多个非密钥列包含在现有的非聚簇索引中。
例如,我有以下列:
EmployeeID, DepartmentID, DesignationID, BranchID
以下是两种情况:
EmployeeID
是具有聚簇索引的主键,其余列(DepartmentID
,DesignationID
,BranchID
)被视为非聚簇索引(复合索引)。EmployeeID
是聚簇索引的主键,DepartmentID
是DesignationID
的非聚簇索引,BranchID
是非聚簇索引的“包含列”。
上面两个有什么区别?如果两者都是相同的新引入“覆盖指数”概念?
答案
不同之处在于,如果第一个索引中有两个具有相同DepartmentID的行,则它们将根据其DesignationID和BranchID的值进行排序。在第二种情况下,它们不会相对于彼此进行排序,并且可以在索引中以任何顺序出现。
就这对您的应用程序意味着什么:
- 可以使用(DepartmentID,DesignationID)上的索引的查询对于第一个查询比第二个查询更有效。
- 由于需要额外的排序,构建第一个索引可能需要稍长的时间。
另一答案
涵盖索引是带有INCLUDE子句的非聚簇索引
以上是关于复合非聚簇索引和覆盖索引之间有什么区别的主要内容,如果未能解决你的问题,请参考以下文章
通俗易懂:索引单列索引复合索引主键唯一索引聚簇索引非聚簇索引唯一聚簇索引 的区别与联系
通俗易懂 索引单列索引复合索引主键唯一索引聚簇索引非聚簇索引唯一聚簇索引 的区别与联系