我们应该使用哪种sql数据类型作为数字基本主键:
INT
BIGINT
数字
浮动
Ken Gentle.. 56
一般来说,int
.
bigint
如果你认为你的行数比宇宙中的原子多.
uniqueidentifier
如果您需要全局唯一键(在模式中的所有表中保证唯一的键,甚至可能是普遍唯一的(我不记得)),这非常有用
另外两个我不会使用它们不是整数类型(它们有分数,它们作为键没有多大意义)
一般来说,int
.
bigint
如果你认为你的行数比宇宙中的原子多.
uniqueidentifier
如果您需要全局唯一键(在模式中的所有表中保证唯一的键,甚至可能是普遍唯一的(我不记得)),这非常有用
另外两个我不会使用它们不是整数类型(它们有分数,它们作为键没有多大意义)
你真的需要分开两个不同的问题:
1)主键是一个逻辑结构 - 唯一且可靠地标识表中一行的关键候选之一.这可以是任何东西,真的 - 一个INT,一个GUID,一个字符串 - 选择对你的场景最有意义的东西.
2)聚类键(在表上定义"聚簇索引"的一列或多列) - 这是一个与物理存储相关的东西,这里,一个小的,稳定的,不断增加的数据类型是你最好的选择 - INT或BIGINT作为默认选项.
默认情况下,SQL Server表上的主键也用作群集键 - 但这不一定是这样!在将以前的基于GUID的主群集密钥分解为两个单独的密钥 - GUID上的主(逻辑)密钥和单独的INT IDENTITY上的群集(排序)密钥时,我个人似乎随着时间的推移而获得了巨大的性能提升. ,1)专栏.
索引碎片降至最低水平,因此索引寻求性能提升 - 强烈推荐!
渣