2010-11-13 128 views
2

我正在優化我正在處理的SQL Server 2008數據庫中的索引。現在我在「中央」桌上。多個索引與強制表掃描

本表共7列。它還有一個主鍵(當然),加上我以DESC順序索引的日期戳。由於連接的性質,我相信需要6個索引(一些連接是超低基數的表或者不會被查詢)。

但是,這張表大量寫入。 6個指標的表現會很差(1表示2列指數)。查詢可以針對大多數連接的表運行,所以我不知道如何刪除任何索引。

有沒有人知道確定如何平衡索引數量的最佳做法?

更新:

下面是表中的權益列:

MentionID  int    primary key 
ParentID   int    indexed 
ProfileID  int    indexed 
SourceCategoryID tinyint   indexed with next column 
SourceID   int 
RoleplayerID  int    indexed 
DateStamp  smalldatetime indexed DESC 
Subject  nvarchar(1000) 
KeyMessage  nvarchar(1000) 
SentimentID tinyint   unindexed: low cardinality 
ScopeID  tinyint   unindexed: low cardinality 
+0

你是怎麼來的結論: 「我相信6項指標要求」? – 2010-11-13 13:26:44

回答

1

只有一個「最佳實踐」:嘗試和測量,測量,測量和重新測量。

有沒有理論的方法來知道這些額外的指標會如何影響你的表現 - 你需要嘗試看看。

Kimberly Tripp在其博客文章Spring cleaning your indexes中詳細描述了一種可能有所幫助的方法。它並沒有給你很多規則如何知道有多少指標可以使用 - 但是它給你提供了方法和提示,以便找出哪些指標可能根本不會被使用 - 可以拋出這些指標來加快處理速度。

另一方面:SQL Server也有一個DMV來告訴你它認爲哪些索引是有益的,並且有助於加快你的查詢速度 - 不時地檢查DMV,看看SQL Server查詢優化器會喜歡什麼添加;如果這符合您即將創建的指數,那麼您可能正處於正確的軌道上!

+0

授予。另一方面,表格很小的地方有規則。我認爲可能有一些規則或至少在這一方面的指導方針。 – IamIC 2010-11-13 10:17:30

+1

@IanC:更新了我的回答,提供了一些額外的提示,提示,提示 – 2010-11-13 11:00:58

+1

非常感謝! – IamIC 2010-11-13 12:08:02