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/