gpt4 book ai didi

sql-server - 复合非聚集索引和覆盖索引有什么区别

转载 作者:行者123 更新时间:2023-12-03 00:27:08 24 4
gpt4 key购买 nike

SQL Server 2005 包含“覆盖索引”功能,该功能允许我们选择多个非键列来包含到现有的非聚集索引中。

例如,我有以下列:

EmployeeID, DepartmentID, DesignationID, BranchID

这里有两种情况:

  • EmployeeID 是主键聚集索引和剩余的列(DepartmentIDDesignationIDBranchID)被视为非集群指数(综合指数)。

  • EmployeeID 是主键聚集索引和 DepartmentID 是非聚集索引DesignationIDBranchID 已“包含”columns”用于非聚集索引。

上面两个有什么区别?如果两者相同,引入“覆盖指数”概念有什么新内容?

最佳答案

区别在于,如果第一个索引中有两行具有相同的 DepartmentID,则它们将根据 DesignationID 和 BranchID 的值进行排序。在第二种情况下,它们不会相对于彼此排序,并且可以以任何顺序出现在索引中。

就这对您的应用程序意味着什么而言:

  • 如果查询可以使用 (DepartmentID, DesignationID) 上的索引,则第一个查询的效率会比第二个查询的效率更高。
  • 由于需要额外的排序,构建第一个索引可能需要稍长的时间。

关于sql-server - 复合非聚集索引和覆盖索引有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3897203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com