2011-02-15 154 views
2

在我的情況,我有一個表(很多表),使用身份列作爲他們的主鍵。它們還將包含一個唯一的int列RecordID。 90%的時間RecordID將用於搜索記錄。 ID身份專欄甚至存在的唯一原因是讓我們的系統保持一致。在這種情況下,我應該從ID列中刪除聚集索引並將其添加到RecordID列?然後在非常罕見的情況下,將主密鑰ID添加到非聚集索引中,以用於獲取記錄。謝謝!!非主鍵列上的聚簇索引或非聚簇索引?

回答

4

如果您的查詢是在RecordID上的單身查詢(即WHERE RecordID=...),那麼我不會改變它。確實,它上的聚集索引會更快,但只有在非常熱門的情況下才會引起注意。

如果您有範圍查詢(BETWEEN,<>),我會考慮進行更改。範圍掃描可以從聚集索引中獲益更多,因爲非聚集索引可能受制於index tipping point

要考慮的另一件事是,如果您具有可通過此聚簇索引滿足的排序要求(查詢中的ORDER BY或GROUP BY,或者帶有ORDER by子句的ROW_NUMBER,則爲ranking functions)。聚集索引可以幫助他們更好。

相關問題