2009-11-16 52 views
0

我有一個經常運行的查詢。它是一個動態sql查詢,因爲按變化排序。將索引添加到sql server

​​

查詢的OVER部分可以是:

  • 用戶ID
  • 創建

我應該創建一個索引:

  • divisionID + isenrolled
  • divisionID + isenrolled + each_sort_by_option?

我應該把這張表的索引放在哪裏?

+0

我會盡量避免太多的索引 - 這可能跟索引一樣糟糕!一個索引有希望加快SELECT的速度 - 但同時,INSERT和DELETE(以及潛在的更新)會導致性能損失。小心不要過度索引你的桌子! :-) – 2009-11-16 17:26:52

回答

0

開始divisionID + isenrolled + userID,因爲它總是會使用

2

我與

CREATE INDEX IX_SOQuestion ON dbo.users (divisionID, isenrolled) INCLUDE (userID, created) 
  • created排名開始是毫無關係的WHERE子句,所以可能也只是它列入(所以它被覆蓋了)而不是在關鍵列中。無論如何都需要內部排序,那麼爲什麼要把關鍵字放大呢?

  • 其他排序列可列入太

  • userid只需要輸出,所以它包含

  • 可能採取isenrolled成包括:如果是位。只有2個狀態(確定,3個NULL),所以有點毫無意義地添加到鍵列