标识列作为主键

时间:2009-12-03 07:08:09

标签: primary-key identity-column

请问您是否认为将标识列作为主键是一种好习惯? 对于ORM工具,在表上使用标识列有帮助。但还有其他副作用,例如意外重复插入。

由于 Nayn

3 个答案:

答案 0 :(得分:4)

是的,使用INT(或BIGINT)IDENTITY是SQL Server的一个很好的做法。

SQL Server使用主键作为其默认群集键,并且群集键应始终具有以下属性:

  • 静态
  • 独特
  • 不断增加

INT IDENTITY非常适合这项法案!

有关更多背景信息,尤其是一些信息,为什么GUID作为您的主要(以及群集键)是错误的想法,请参阅Kimberly Tripp的优秀帖子:

如果您有理由将GUID用作主键(例如复制),那么请务必确保在这些表上使用INT IDENTITY作为群集密钥

马克

答案 1 :(得分:3)

在没有复制或大量数据合并的环境中,

IDENTITY键是服务器端生成的密钥的一种很好的做法。它们的实现方式,它们不允许在同一个表中重复,所以不要担心。它们还具有在没有大量DELETE的表中最小化碎片的优点。

GUID是通常的选择。它们的优势在于您可以在Web层创建它们,而无需进行数据库往返。但是,它们比IDENTITIES更大,并且它们可能导致极端的表碎片。由于它们是(半)随机的,插入遍布整个表格,而不是在最后一页聚焦。

答案 2 :(得分:0)

我使用Guid,因为在处理分布式应用程序时它确实很有用。特别是当所有分布式实例也需要创建新数据时。

然而,在简单的情况下,我没有看到自动递增整数主键的任何问题。我更喜欢它们,因为它更容易直接使用SQL查询,因为它更容易记住。