2009-07-11 24 views
3

我使用SQL Server 2005.我有一個簡單的日誌表,我的Web應用程序用它來跟蹤用戶活動和URL訪問。 表設計非常簡單需要關於爲日誌表選擇聚集索引的建議

ID(標識值),

LOGDATE(日期時間),

活性(nvarchar的(200)),

地址(爲nvarchar(1000))

我們主要做插入到這張表中。 偶爾,如果我們想調查某個日期的特定用戶的活動,我們會對此表執行一些查詢。 該表當前有一個標識列作爲其主鍵。這也是它的聚集索引。

我想知道如果我更改它的聚集索引到LogDate列是否更好。 LogDate列存儲活動的日期/時間並且可以有重複,但由於我們總是插入到表中,所以新記錄應始終位於表的末尾,因此沒有理由讓SQL Server必須重新組織或進行會影響插入性能的頁面拆分。將LogDate列作爲聚集索引還應該有助於搜索性能。

請讓我知道我的推理是否正確。謝謝!

回答

3

是的,你的推理是正確的,只要插入的速度比datetime3.33ms

SQL Server 2008中的粒度要小得多有一個新的數據類型,DATETIME2,具有更高的精度(100納秒)。

如果您留出合理數量的可用空間(FILLFACTOR介於80-90之間),並定期重建指數(每週一次),一切都會很好。

0

我認爲最好的選擇是使用「數據庫引擎優化嚮導」。 這將照顧爲您的情況選擇最佳選擇。 你只需要運行它足夠長的時間來覆蓋你的不同情況,以便其分析能夠最好地匹配你的實際情況。

您可以在http://msdn.microsoft.com/en-us/library/ms189303%28SQL.90%29.aspx以上(對於SQL Server 2005)

+0

DTA做了一個合理的工作,但偶爾會提示'錯誤'指數。 – 2009-07-11 08:42:02

3

在選擇聚類索引之前,我們需要設置優先級。更重要的是:加快不頻繁的選擇或最小化頻繁的插入速度?如果您的插入更重要,請保留現有的羣集索引。

+0

感謝您的建議。這是我應該考慮的事情。 因此,你所說的是,如果我將ID保留爲聚簇索引,那麼插入性能會比使用LogDate聚簇索引稍微好一點。 – janem 2009-07-12 03:39:34