假设我们有此索引

CREATE INDEX IX_test ON t1(c1) INCLUDE (c2)

这是否意味着我们将有C2在这两个索引页与实际数据页?真正的问题是 - ?不更新C2意味着SQL Server将不得不更新IX_test和实际数据行(聚集索引)

有帮助吗?

解决方案

是,就像包括在索引数据复制的任何字段。这包括一个领域的所有指标(指数)必须在领域的变化进行更新。

因此,当你延伸的索引,以覆盖一个查询(或多于1),要复制的数据。它总是一个贸易的。

其他提示

簇索引是表的一部分,因此它只是更新表本身。如果是的非聚集索引,那么答案将是肯定的。

  

CLUSTERED   创建其中的关键值的逻辑顺序确定在表中的相应行的物理顺序的索引。底部,或叶,簇索引的水平包含表的实际数据的行。表或视图在一个时间被允许一个簇索引。有关详细信息,请参阅聚集索引结构。

//编辑: 我看到我周围的理解是另一种方式。问题的关键是,如果你更新一列,你必须更新: 1)聚簇索引 2)含有该列中的所有非聚集索引

有总是在设计数据库时,一个问题是什么/多少索引创建 - 它的读写速度(和我们真正需要的)之间的平衡的情况下

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top