假设我有一张桌子:
CREATE TABLE Users (
Id INT IDENTITY (1, 1),
FirstName VARCHAR(40),
LastName VARCHAR(40)
)
查询通常在FirstName或LastName上,但也在FirstName 和 LastName上。
如果我在FirstName上创建一个非聚集索引,在LastName上创建另一个索引,那么我的前两个查询将得到满足。显然,SQL Server 将对其他查询使用索引交集。
或者,如果我在 (FirstName) 和 (LastName, FirstName) 上有索引对象,SQL Server 是否可以/是否将第二个索引用于仅对LastName的查询以及对两者的查询?
SQL Server 是从左到右还是从右到左存储复合索引部分?换句话说:它会将密钥构建为 LastNameFirstName 还是 FirstNameLastName?还是可以随意选择一个?