何时在SQL Server中使用GUID

时间:2011-09-10 10:44:34

标签: sql-server database primary-key guid auto-increment

  

可能重复:
  GUID vs INT IDENTITY

我偶尔会看到一个使用GUID的系统,我问自己这对性能有多大影响。我曾经在一个使用GUID的系统上工作过,它是由一个“高级开发人员”编写的,他总是说这是最好的选择等。我运行了多次测试来检查GUIDs与自动增量的性能,自动增量赢了每个查询的秒数......

我想知道在什么情况下我应该使用GUID而不是多个主键/自动增量。

2 个答案:

答案 0 :(得分:0)

关于这个问题,有的辩论/意见/答案,有些是关于SO的,还有很多,如果你是谷歌的话。

答案 1 :(得分:0)

Guids(MSSQL中的uniqueidentifier)适用于提供这些优势的密钥:

1)您可以在将对象插入数据库之前自己创建密钥。这允许您创建Nth的记录(外键引用)的主要详细信息,而无需先询问数据库下一个主记录密钥的内容。

2)您可以为系统范围内的任何记录创建唯一密钥,这对于使用实体的类层次结构的ORM数据库非常有用。

3)您可以对用于识别特定记录的guid进行硬编码。示例可能是主“root”用户记录,主“代理”代理记录(如果您创建公司/代理层次结构),预定义查找(如性别,安全角色)。

关于优化,是的,使用任何正常的密钥guid会降低数据库的速度,但是你可以使用数据库优化的guids(你必须谷歌的东西)。基本上数据库优化的guid使guid更顺序,但保留足够的随机部分以保持它们的唯一性。