1

可能重复:
使用包含列或不使用创建索引的差异

编辑:忽略此帖子,我将其标记为 mod,因为它是重复的。谢谢大家的回复!

创建多列索引,这两者有什么区别:

CREATE INDEX MyIndex ON TABLE1 (COLUMN1 ASC, COLUMN2 ASC, COLUMN3 ASC, [etc...])

对比

CREATE INDEX MyIndex ON TABLE1 (COLUMN1 ASC)
INCLUDE (COLUMN2, COLUMN3, [etc...] )

MSDN 说后者意味着包括非关键列。通俗地说,这意味着什么?重点是,我基本上要处理这样一种情况,即我必须优化查询,这些查询只需要表中几十列中的 3-5 列的数据,可以说使用其中一列作为“基础”索引并获取来自同一行的其他列值。

在一个上创建聚集索引不是一种选择,因为表会定期更新,这往往会创建大量的锁和等待。我目前正在测试这些,但我也想从你们那里得到一个明智的答案。:)

4

1 回答 1

2

这意味着索引不是基于 INCLUDE 子句中的列,这意味着当 INCLUDE 子句中的列被更新时,索引中的相应行不必移动。有关详细信息,包括使用场景,请参阅

于 2012-06-11T15:30:23.727 回答