哪个是SQL Server数据库中最常见的ID类型,哪个更好?

Nat*_*ate 6 sql sql-server database-design

使用Guid(UniqueIdentifier)作为Primary/Surrogate Key列或序列化的"identity"整数列是否更好; 和为什么它更好?在哪种情况下你会选择一个而不是另一个?

mar*_*c_s 9

我个人使用INT IDENTITY来处理我的大多数主键和集群键.

您需要将作为逻辑构造的主键分开- 它唯一地标识您的行,它必须是唯一且稳定且非NULL.GUID也适用于主键 - 因为它保证是唯一的.如果使用SQL Server复制,GUID作为主键是一个不错的选择,因为在这种情况下,无论如何都需要唯一标识的GUID列.

SQL Server中的聚类键是一个物理构造,用于数据的物理排序,并且更难以正确.通常,SQL Server上的索引女王Kimberly Tripp也需要一个好的集群密钥,它是唯一的,稳定的,尽可能窄的,并且理想情况下不断增加(INT IDENTITY是).

在这里查看她关于索引的文章:

对于群集密钥,GUID是一个非常糟糕的选择,因为它很宽,完全随机,因此导致错误的索引碎片和糟糕的性能.此外,群集密钥行也存储在每个非群集(附加)索引的每个条目中,因此您确实希望保持较小 - GUID为16字节,而INT为4字节,并且有几个非聚集索引和几百万行,这是一个巨大的差异.

在SQL Server中,您的主键默认情况下是您的群集密钥 - 但它不一定是.您可以轻松地使用GUID作为NON-Clustered主键,并使用INT IDENTITY作为您的群集键 - 只需要了解一点.

  • 一定要爱金特里普. (2认同)

fle*_*esh 7

在复制系统中使用GUID,您需要保证唯一性.

使用具有非复制数据库且您希望最大化性能的ints.


Adr*_*der 5

很少使用GUID.

使用主键/代理键进行存储.

这也将使人类与数据交互变得更容易.

创建索引也会更有效率.

看到