我有一個經常運行的查詢。它是一個動態sql查詢,因爲按變化排序。將索引添加到sql server
查詢的OVER部分可以是:
- 用戶ID
- 創建
我應該創建一個索引:
- divisionID + isenrolled
- divisionID + isenrolled + each_sort_by_option?
我應該把這張表的索引放在哪裏?
我有一個經常運行的查詢。它是一個動態sql查詢,因爲按變化排序。將索引添加到sql server
查詢的OVER部分可以是:
我應該創建一個索引:
我應該把這張表的索引放在哪裏?
開始divisionID + isenrolled + userID
,因爲它總是會使用
我與
CREATE INDEX IX_SOQuestion ON dbo.users (divisionID, isenrolled) INCLUDE (userID, created)
的created
排名開始是毫無關係的WHERE子句,所以可能也只是它列入(所以它被覆蓋了)而不是在關鍵列中。無論如何都需要內部排序,那麼爲什麼要把關鍵字放大呢?
其他排序列可列入太
userid
只需要輸出,所以它包含
可能採取isenrolled成包括:如果是位。只有2個狀態(確定,3個NULL),所以有點毫無意義地添加到鍵列
我會盡量避免太多的索引 - 這可能跟索引一樣糟糕!一個索引有希望加快SELECT的速度 - 但同時,INSERT和DELETE(以及潛在的更新)會導致性能損失。小心不要過度索引你的桌子! :-) – 2009-11-16 17:26:52