Performance

Guid vs INT - 哪個更好作為主鍵?

  • March 23, 2022

我一直在閱讀使用或不使用Guidint.

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 中的標識種子)。

引用自:https://dba.stackexchange.com/questions/264