假设我有一张桌子:
CREATE TABLE Users (
Id INT IDENTITY (1, 1),
FirstName VARCHAR(40),
LastName VARCHAR(40)
)
查询通常是开启的名 or LastName,而且还关于名 and LastName.
如果我创建一个非聚集索引名另一个关于LastName,那么我的前两个查询就得到了满足。显然,SQL Server 将使用索引交集 http://www.sql-server-performance.com/articles/per/index_intersection_p1.aspx对于其他查询。
或者,如果我在 (FirstName) 和 (LastName, FirstName) 上有索引,SQL Server 是否可以/是否使用第二个索引来查询LastName以及对两者的疑问?
SQL Server 复合索引部分是从左到右还是从右到左存储?换句话说:它将把密钥构建为 LastNameFirstName 或 FirstNameLastName?还是可以任意选择一个?
SQL Server 是否可以/是否使用索引(LastName、FirstName)来查询 LastName 以及两者?
是的,数据库将使用索引 (LastName, FirstName) 来查询 LastName。它会not不过,仅将此索引用于对 FirstName 的查询。
它是从左到右还是从右到左存储复合索引部分?
存储位于B-Tree http://en.wikipedia.org/wiki/B-tree。无论您认为它是从右到左存储还是从左到右存储,都只是一种有用的可视化辅助,与实际的数据存储无关。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)