gpt4 book ai didi

sql-server - SQL Server 索引重叠

转载 作者:行者123 更新时间:2023-12-03 07:53:17 27 4
gpt4 key购买 nike

我正在浏览一个遗留数据库,我想在开始清理之前检查我对索引的理解。

查看这 3 个示例索引:

CREATE INDEX IX_1 ON MyTable (id);
CREATE INDEX IX_2 ON MyTable (id, block);
CREATE INDEX IX_3 ON MyTable (id) INCLUDE (dateDone);

我的理解是,任何使用 IX_1 的查询都可以与 IX_2IX_3 执行同样的效果。

或者保留 IX_1 有什么好处吗?

所有这些都可以替换为:

CREATE INDEX IX_4 ON MyTable (id, block) INCLUDE (dateDone)

最佳答案

是的,这是正确的。所有这些都可以替换为 IX_4。仅针对 id 的任何查询过滤都可以使用前导键列为 id 的任何索引。

在非常特殊的情况下,您不会这样做:当查询查询id列时,并且会从读取更窄的索引中受益。但这是基于其他特别宽的列,例如 varchar(8000)varchar(max),并且它将扫描所有或较大的列该索引的一部分,而不仅仅是一行。否则,维护额外索引的成本可能不值得。

关于sql-server - SQL Server 索引重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76616448/

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