一尘不染

Guid vs INT - 哪个更好作为主键?

sql

我一直在阅读使用或不使用Guidint.

int更小,更快,易于记忆,保持时间顺序。至于Guid,我发现的唯一优势是它是独一无二的。在哪种情况下 aGuid会比 a 更好int,为什么?

从我所见,int除了数量限制之外没有任何缺陷,这在许多情况下是无关紧要的。

究竟为何而Guid生?我实际上认为它除了作为简单表的主键之外还有其他用途。(有什么真正的应用程序使用Guid的例子吗?)


阅读 89

收藏
2022-10-23

共1个答案

一尘不染

GUID 优点

  • 每个表、每个数据库和每个服务器都是唯一的
  • 允许轻松合并来自不同数据库的记录
  • 允许跨多个服务器轻松分布数据库
  • 您可以在任何地方生成 ID,而不必往返于数据库,除非需要部分顺序(即使用newsequentialid()
  • 大多数复制方案无论如何都需要 GUID 列

GUID 缺点

  • 它比传统的 4 字节索引值大 4 倍;如果您不小心,这可能会对性能和存储产生严重影响
  • 调试繁琐 ( where userid='{BAE7DF4-DDF-3RG-5TY3E3RF456AS10}')
  • 生成的 GUID 应该部分顺序以获得最佳性能(例如,newsequentialid()在 SQL Server 2005+ 上)并启用聚集索引

如果您确定性能并且不打算复制或合并记录,请使用int,并将其设置为自动增量(SQL Server 中的标识种子)。

2022-10-23