2013-05-13 35 views
8

GUID是如何內部存儲的,並通過SQL進行比較(尤其是MS SQL Server 2008)?它是一個數字還是字符串?另外,使用GUID作爲主鍵時性能會不會很高?什麼數據類型是SQL服務器中的GUID?

除了與集羣這裏提到的問題: What are the best practices for using a GUID as a primary key, specifically regarding performance?

我覺得應該是128位數字(如描述here),但我不能找到它是如何在SQL服務器中實現模式的詳細信息。

+0

http://stackoverflow.com/questions/6945878/how-is-a-guid-actually-stored-and-sorted-compared-in-sql-server – bummi 2013-05-13 11:39:43

+0

謝謝,我錯過了,不知何故......。 – 2013-05-13 11:48:25

回答

7

16個字節,恰好爲GUID structure

typedef struct _GUID { 
    DWORD Data1; 
    WORD Data2; 
    WORD Data3; 
    BYTE Data4[8]; 
} GUID; 
10

明智的性能,正常GUID是SQL Server比INT

如果你打算使用GUID,使用uniqueidentifer代替varchar數據類型。微軟沒有提到他們是如何實現它的,當你使用uniqueIdentifer作爲數據類型時,有一些速度優化。

要使用GUID作爲主鍵而不犧牲整數的速度,請使GUID連續。將uniqueidentifer數據類型定義爲PK,將缺省值設置爲NEWSEQUENTIALID()

查看NEWSEQUENTIALID (Transact-SQL)瞭解更多詳情。

至於順序GUID值如何幫助性能,請參閱The Cost of GUIDs as Primary Keys

+0

+1感謝有趣的鏈接。 – 2013-05-13 12:28:57

相關問題