SQL Server:多列索引

时间:2012-06-11 15:19:54

标签: sql-server indexing

  

可能重复:
  Difference of create Index by using include column or not using

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

创建多列索引,这两者之间的区别是什么:

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

VS

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

MSDN说后者意味着包括非键列。这在外行人的意义上是什么意思?重点是,我基本上处理的情况是我必须优化查询,只需要表中几十列中的3-5列数据,使用其中一列作为“基础”索引,以便说出并获得来自同一行的其他列值。

在一个上创建聚簇索引不是一个选项,因为表会定期更新,这往往会产生大量的锁定和等待。我正在测试这些,但我也希望你们能够得到明智的回答。 :)

1 个答案:

答案 0 :(得分:2)

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