微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

解决方法

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

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

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

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

> GUIDs as PRIMARY KEYs and/or the clustering key
> The Clustered Index Debate Continues…
> Ever-increasing clustering key – the Clustered Index Debate……….again!

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐