我在生產中有一個數據庫應用程序,並且所有表使用當前設置爲聚簇索引的GUID主鍵。由於性能考慮,我明白這是一個糟糕的設計。我一直在閱讀這個話題,其中包括Kimberly Tripp的this great article。GUID主鍵,單獨的聚簇索引列
我可以通過簡單地創建INT
類型的自動遞增索引列並將其設置爲聚集索引來改善性能嗎?我從Kimberly的文章中瞭解到,所有非聚集索引(如我的GUID主鍵繼續前進,如果我這樣做)將引用聚集索引。但是如果我使用WHERE
子句中的GUID主鍵搜索記錄,這實際上是否會提高性能?
另外,爲了獲得性能增益,我是否必須按創建記錄的自然順序填充現有記錄的新列?
編輯:爲了解決這個問題,即是否是this other question重複:另一個問題是問一般對於性能考慮使用GUID主鍵的最佳實踐。沒有討論具體的方法。另一方面,我的問題是要求特別是是否增加類型INT
類型的自動遞增索引列將有助於改善帶有GUID主鍵的問題。此外,我的問題是問我是否必須按照「自然順序」填充新欄目才能實現收益,而由於其較高的通用性,另一個問題也未涉及。
是的,通過使用更合適的羣集密鑰來顯着減少碎片,您的性能應該會更好。 GUID將是唯一的 - 所以你總是隻提取一條記錄,所以即使有一個額外的密鑰查找,隨着時間的推移,更好的碎片行爲應該是有益的 –
可能的重複[有什麼使用GUID的最佳實踐作爲主要關鍵,特別是關於性能?](http:// stackoverflow。com/questions/11938044 /使用guid-as-a-key-specific-rega的最佳做法) – AHiggins
@ Ahiggins - 請參閱我的編輯。 –