用于数字基础主键的 SQL 数据类型应该使用:
- int(整型)
- bigint(大整型)
- numeric(数字)
- float(浮点型)
用于数字基础主键的 SQL 数据类型应该使用:
通常使用 int
。
如果您认为将有比宇宙中的原子数更多的行,则使用 bigint
。
如果您需要全局唯一键(在模式中保证在所有表格上都是唯一的,甚至可能是普遍唯一的),则可以使用 uniqueidentifier
。
其他两种类型我不会使用,因为它们不是整型(它们具有小数部分,作为键并没有太多意义)。
bigint
的64位最大值远远低于宇宙中估计的原子数量——约为10^80——即使使用256位整数也无法容纳。 :) - Charles Burns你需要把两个不同的问题分开考虑:
1)主键是一个逻辑结构 - 用于唯一可靠地标识表中某一行的关键候选项。这可以是任何东西 - 整数、GUID、字符串 - 根据您的情况选择最合适的。
2)聚集键(定义表上“聚集索引”的列)- 这是与物理存储相关的内容,而在这里一个小型、稳定、递增的数据类型是最佳选择 - INT或BIGINT作为默认选项。
默认情况下,SQL Server表上的主键也被用作聚集键 - 但不一定非得这样!我个人在将基于GUID的主聚集键拆分为两个独立键 - 基于GUID的主键和独立的INT IDENTITY (1,1)列上的聚类(排序)键时,看到了巨大的性能提升。
索引碎片降至最低水平,因此索引查找性能大幅提升 - 强烈建议使用!
Marc
无符号整数
,大小取决于您特定的需求
对于32位处理器来说,整型(int)很可能是最高效的处理大小。