gpt4 book ai didi

azure - 如何避免键查找

转载 作者:行者123 更新时间:2023-12-01 13:47:50 24 4
gpt4 key购买 nike

我的数据库需要将 GUID 作为其主键,因为它与多个脱机数据库同步,因此 IDENTITY 列不是一个选项,因为它会导致同步冲突。

由于 GUID 会导致表碎片较多,因此我们选择向所有表 CREATEDDATETIME 添加另一列(时间戳),并将 CREATEDDATETIME 作为聚集索引,而 GUID 列已成为非聚集索引。

问题是 CREATEDDATETIME 几乎不会在 WHERE 子句中使用,因此执行计划中的几乎所有查询都会在聚集索引 CREATEDDATETIME 上显示 KEY LOOKUP 以获取其数据。我想知道是否可以通过以下两种方式之一来提高性能:

  1. 对于所有非聚集索引,例如 GUID 列上的索引,我也包括 CREATEDDATETIME 列?或;

  2. 我将每个非聚集索引作为复合键确保聚集索引是其中的一部分,即 GUID + CREATEDDATETIME

哪个可能更好?

最佳答案

当您最终需要的信息在叶级别不可用时,就会发生键查找,因此必须转到聚集索引来获取它。想象一下以下查询:

select a, b, c
from dbo.yourTable
where GUID = <some guid>;

如果索引中包含a、b和c列,则可以避免键查找。请注意,聚集键自动成为每个非聚集索引中的包含列(这是有道理的 - 否则它如何能够进行键查找?)。因此,根据实际选择的内容包含列,我认为您会看到关键查找从查询计划中消失。

关于azure - 如何避免键查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34468381/

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