Performance
Guid vs INT - 哪個更好作為主鍵?
我一直在閱讀使用或不使用
Guid
和int
.
int
更小,更快,易於記憶,保持時間順序。至於Guid
,我發現的唯一優勢是它是獨一無二的。在哪種情況下 aGuid
會比 a 更好int
,為什麼?從我所見,
int
除了數量限制之外沒有任何缺陷,這在許多情況下是無關緊要的。究竟為何而
Guid
生?我實際上認為它除了作為簡單表的主鍵之外還有其他用途。(有什麼真正的應用程序使用Guid
的例子嗎?)SQL Server 上的 ( Guid = UniqueIdentifier ) 類型
此處和此處的 Stack Overflow 中已對此進行了詢問。
Jeff 的文章解釋了很多關於使用 GUID 的優缺點。
GUID 優點
- 每個表、每個數據庫和每個伺服器都是唯一的
- 允許輕鬆合併來自不同數據庫的記錄
- 允許跨多個伺服器輕鬆分佈數據庫
- 您可以在任何地方生成 ID,而不必往返於數據庫,除非需要部分順序(即使用
newsequentialid()
)- 大多數複製方案無論如何都需要 GUID 列
GUID 缺點
- 它比傳統的 4 字節索引值大 4 倍;如果您不小心,這可能會對性能和儲存產生嚴重影響
- 調試繁瑣 (
where userid='{BAE7DF4-DDF-3RG-5TY3E3RF456AS10}'
)- 生成的 GUID 應該部分順序以獲得最佳性能(例如,
newsequentialid()
在 SQL Server 2005+ 上)並啟用聚集索引如果您確定性能並且不打算複製或合併記錄,請使用
int
,並將其設置為自動增量(SQL Server 中的標識種子)。