【发布时间】:2011-01-14 18:03:07
【问题描述】:
假设我有一张桌子:
CREATE TABLE Users (
Id INT IDENTITY (1, 1),
FirstName VARCHAR(40),
LastName VARCHAR(40)
)
查询通常针对 FirstName 或 LastName,但也针对 FirstName 和 LastName em>。
如果我在 FirstName 上创建一个非聚集索引,在 LastName 上创建另一个索引,那么我的前两个查询将得到满足。显然,SQL Server 将使用index intersection 进行其他查询。
或者,如果我在 (FirstName) 和 (LastName, FirstName) 上有索引,SQL Server 是否可以/是否将第二个索引用于仅对 LastName 的查询以及对两者的查询?
SQL Server 是从左到右还是从右到左存储复合索引部分?换句话说:它会将密钥构建为 LastNameFirstName 还是 FirstNameLastName?还是可以随意选择一个?
【问题讨论】:
标签: sql-server performance compound-index