SQL server中的GUID是什么数据类型?

SQL server中的GUID是什么数据类型?,sql,sql-server,primary-key,guid,Sql,Sql Server,Primary Key,Guid,SQL(特别是MS SQL server 2008)如何在内部存储和比较GUID?是数字还是字符串?另外,当使用GUID作为主键时,性能是否会受到很大影响 除了这里提到的集群问题之外: 我认为它应该是128位的数字(如上所述),但我找不到有关如何在SQL server中实现它的模式详细信息。16字节,与以下内容完全相同: 就性能而言,SQL Server中正常的GUID比INT慢 如果计划使用GUID,请使用uniqueidentifier而不是varchar作为数据类型。微软没有提到他们是如

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

除了这里提到的集群问题之外:

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

16字节,与以下内容完全相同:


就性能而言,SQL Server中正常的
GUID
INT

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

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

有关更多详细信息,请参阅

关于顺序
GUID
值如何帮助性能,请参阅。

您也可以使用nvarchar(128)

下一个最佳选项是二进制(16)列:

标准guid的长度正好是16个字节。
如果必须将其存储为字符串,那么长度实际上取决于您选择如何对其进行编码。由于十六进制(又名base-16编码)没有连字符,它将是32个字符(每个字节两个十六进制数字)。

谢谢,不知何故我错过了。
typedef struct _GUID {
  DWORD Data1;
  WORD  Data2;
  WORD  Data3;
  BYTE  Data4[8];
} GUID;