我们应该使用哪种sql数据类型作为数字基本主键:
答案 0 :(得分:52)
通常,int
。
bigint
如果你认为你的行数比宇宙中的原子多。
uniqueidentifier
非常有用
另外两个我不会使用它们不是整数类型(它们有分数,它们作为键没有多大意义)
答案 1 :(得分:20)
你真的需要分开两个不同的问题:
1)主键是一个逻辑结构 - 唯一且可靠地标识表中一行的关键候选之一。这可以是任何东西,真的 - 一个INT,一个GUID,一个字符串 - 选择对你的场景最有意义的东西。
2)集群密钥(在表上定义“聚集索引”的一列或多列) - 这是物理存储相关的东西,在这里,一个小的,稳定的,不断增加的数据类型是您的最佳选择 - INT或BIGINT作为您的默认选项。
默认情况下,SQL Server表上的主键也用作群集键 - 但这不一定是这样!在将以前的基于GUID的主群集密钥分解为两个单独的密钥 - GUID上的主(逻辑)密钥和单独的INT IDENTITY上的群集(排序)密钥时,我个人看起来随着时间的推移而获得了巨大的性能提升。 ,1)专栏。
索引碎片降至最低水平,因此索引寻求性能提升 - 强烈推荐!
马克
答案 2 :(得分:2)
不使用GUID的一个重要原因是它们对索引页面的填充率很差 - 这种误用会大大增加您的I / O性能成本。 GUID应保留为AK,而是尽可能使用int派生的PK驱动查询。
答案 3 :(得分:0)
对于32位处理器,int可能是最有效的处理大小。
答案 4 :(得分:0)
unsigned int
以满足您特定需求的大小
答案 5 :(得分:0)
GUID / UUID是表的唯一主键的最佳字段类型。