2011-09-10 33 views
1

可能重複:
GUID vs INT IDENTITY何時使用GUID在SQL Server

時不時地,我看到使用GUID的一個系統,我問自己,這多少會影響性能。我曾經在一個使用GUID的系統上工作過,它是由一個「高級開發人員」寫的,他總是說這是最好的選擇等等。我運行了多個測試來檢查GUID的性能與自動增量,自動增量秒每個查詢...

我想知道什麼情況下我應該使用GUID而不是多個主鍵/自動增量。

回答

0

還有這個問題的辯論/意見/答案圍繞着,一些在這裏和許多更多,如果你谷歌它。

0

的GUID(唯一標識符在MSSQL)是良好的按鍵提供了以下優點:

1)您可以將對象插入數據庫之前自己創建密鑰。這使您可以創建第N個記錄(外鍵引用)的主要細節,而無需先向數據庫詢問下一個主記錄鍵將是什麼。

2)您可以爲系統範圍內的任何記錄創建唯一的密鑰,這對於使用實體的類層次結構的ORM數據庫非常有用。

3)您可以硬編碼指定特定記錄的guid。示例可能是主「根」用戶記錄,主「代理」機構記錄(如果您創建公司/機構層次結構),預定義查詢(如性別,安全角色)。

關於優化,是使用任何常用的鍵的GUID會減慢你的數據庫,但你可以使用數據庫優化的GUID(你必須谷歌的東西)。本質上,數據庫優化的GUID使GUID更加順序,但保留足夠的隨機部分以保持它們的獨特性。