sql - SQL Server中的GUID是什么数据类型?

标签 sql sql-server primary-key guid

SQL(特别是 MS SQL Server 2008)如何在内部存储和比较 GUID?它是数字还是字符串?另外,使用 GUID 作为主键时是否会对性能造成很大影响?

除了这里提到的集群问题: What are the best practices for using a GUID as a primary key, specifically regarding performance?

我认为它应该是 128 位数字(如所述 here ),但我找不到有关它如何在 SQL Server 中实现的模式详细信息。

最佳答案

就性能而言,普通 GUID 比 SQL Server 中的 INT

如果您计划使用 GUID,请使用 uniqueidentifier 而不是 varchar 作为数据类型。微软没有提到他们是如何实现的,当你使用uniqueidentifier作为数据类型时,有一些速度优化。

要使用 GUID 作为主键而不牺牲整数速度,请将 GUID 值设置为顺序。将uniqueidentifier数据类型定义为PK,将默认值设置为NEWSEQUENTIALID()

参见NEWSEQUENTIALID (Transact-SQL)了解更多详情。

关于连续 GUID 值如何帮助提高性能,请参阅 The Cost of GUIDs as Primary Keys .

关于sql - SQL Server中的GUID是什么数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16521052/

相关文章:

sql-server-2005 - newid() 与 newsequentialid() 有什么区别/优缺点?

sql - 为什么CTE计算在查询计划中重复,如何在不重复代码的情况下对其进行优化?

sql - 日期时间值生成 MS SQL

sql-server - 当您忘记关闭和释放游标时会发生什么?

c# - 在C#中查找SQL Server连接的数据源

sql-server - 当我在 SQL 2005 中删除聚集主键时会发生什么

sql-server - 为什么在SQL中使用 "not null primary key"?

SQL Server 2012 - 积压和结转的运行总计

sql - 在有条件的多对多表中执行左连接

sql-server - 从存储过程返回错误消息