2012-06-11 66 views
1

可能重复:
Difference of create Index by using include column or not usingSQL服务器:多列索引

编辑:忽略这个岗位,我标记它国防部因为它是一个重复的。谢谢你的回复!

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

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列中的数据,使用其中一列作为“基本”索引来说话并获取来自同一行的其他列值。

由于表定期更新,因此在其上创建聚簇索引不是一种选择,因为该表会定期更新,这往往会创建大量锁和等待。我目前正在对这些进行测试,但我希望你们也能得到明智的答案。 :)

+0

此问题可能更适合http://dba.stackexchange.com – Lamak

+0

啊,它是重复的,谢谢。该页面正是我正在寻找的那种答案。 – Kahn

回答

2

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

+1

谢谢马丁,我的措辞很精准 - 我修好了 –