【问题标题】:Is there an efficiency benefit to using INT vs GUID for a primary key?将 INT 与 GUID 用作主键是否有效率优势?
【发布时间】:2016-06-29 06:03:36
【问题描述】:

我有一种情况,我正在考虑使用 INT(随机生成)或 GUID 作为表的主键。我完全意识到随机生成的 INT 可能会产生重复,但我可以轻松处理此问题,并且我准备接受这一点,因此重复的机会不是问题的一部分。

鉴于我对重复 INT 的可能性很小。

使用 INT 与 GUID 作为主键或索引有优缺点吗?当涉及到范围搜索时,SQL Server 是否能更好地处理其中一个或另一个? SQL Server 是否对 GUID 和 INT 进行了优化?

【问题讨论】:

标签: sql-server


【解决方案1】:

如果您关心性能,那么 int 将仅仅因为数据类型的大小而击败 GUID 实现。您是在比较使用uniqueidentifier 类型还是使用char(32)?任何一个都将比int 实现慢。

不过,GUID 是一个不错的选择,具体取决于您正在构建的应用程序的类型。如果您正在构建一些您希望能够在接触任何状态机之前生成“唯一”标识符的东西,那么请使用 GUID。

如果您是数据库专家,您可能会发现自己倾向于 int。

如果您是应用程序开发人员,您可能会发现自己倾向于 GUID。

只是一个简单的问题,为什么不使用sequence

这取决于。

希望这会有所帮助。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-18
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多