当两列或更多列经常在同一查询中被搜索或用于互相关联时,要使用组合索引。
在这个示例中,假定TerminationReason和DepartmentID经常用在同一SELECT查询的WHERE子句中。创建如下的NONCLUSTER印INDEX:
USE AdventureWorks
GO
--假定TerminationReason和DepartmentID经常用在同一SELECT查询的WHERE子句中。
--创建如下的NONCLUSTER印INDEX:
CREATE NONCLUSTERED INDEX NI_TerminationReason_TerminatlonReason_DepartmentID
ON HumanResources.TerminationReason(TerminationReason,DepartmentID)
选择哪些列作为索引可以说是一种艺术。你会希望将索引添加到你认为经常会查询到的列:但是必须牢记列的选择性。如果列的选择性很低,例如,在上千行中只包含几个唯一值,那么当创建查询执行计划时,SQL Server不太可能利用此查询。创建组合索引时,一个经验做法是将最常选择的列放在开始部分,随后才是其他较少选择的列。在这个示例中,选择TerminationReason作为第一列,随后是DepartmentID。两个列都保证在表中是完全唯一的,所以它们具有相同的选择性。