2012-06-11 47 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

謝謝馬丁,我的措辭很精準 - 我修好了 –