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

Ond*_*rka 9 sql sql-server guid primary-key

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

除了这里提到的聚类问题: 使用GUID作为主键的最佳实践是什么,特别是关于性能?

我觉得应该是128位数字(如描述在这里),但我不能找到它是如何在SQL服务器中实现模式的详细信息.

Mik*_*Lim 13

性能方面,正常GUIDINTSQL Server 慢

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

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

有关更多详细信息,请参阅NEWSEQUENTIALID(Transact-SQL).

有关顺序GUID值如何帮助提高性能,请参阅GUID成本作为主键.


Rem*_*anu 8

16字节,与GUID结构完全相同:

typedef struct _GUID {
  DWORD Data1;
  WORD  Data2;
  WORD  Data3;
  BYTE  Data4[8];
} GUID;
Run Code Online (Sandbox Code Playgroud)