gpt4 book ai didi

sql-server - 当 WHERE 子句中只有单个列时,SQL Server 是否会使用复合索引?

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

假设我有一张 table :

CREATE TABLE Users (
Id INT IDENTITY (1, 1),
FirstName VARCHAR(40),
LastName VARCHAR(40)
)

查询通常针对FirstNameLastName,但也针对FirstNameLastName.

如果我在FirstName上创建一个非聚集索引,在LastName上创建另一个非聚集索引,那么我的前两个查询就可以满足。显然,SQL Server 将使用 index intersection对于其他查询。

或者,如果我在 (FirstName) 和 (LastName, FirstName) 上有索引,SQL Server 是否可以/是否使用第二个索引来仅对 LastName 进行查询以及对两者进行查询?

SQL Server 是从左到右还是从右到左存储复合索引部分?换句话说:它将把 key 构建为 LastNameFirstName 或 FirstNameLastName?还是可以任意选择一个?

最佳答案

can/does SQL Server use the index (LastName, FirstName) for queries on just LastName as well as queries on both?

是的,数据库将使用索引(LastName、FirstName)来查询 LastName。不过,它不会仅使用此索引来查询 FirstName。

Does it store compound index parts left-to-right or right-to-left?

存储位于 B-Tree 中。无论您认为它是从右到左存储还是从左到右存储,都只是一种有用的可视化辅助,与实际的数据存储无关。

关于sql-server - 当 WHERE 子句中只有单个列时,SQL Server 是否会使用复合索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2228192/

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