主键类型:整型与长整型

我知道一些软件商店已经通过使用int类型作为持久类的主键而被烧毁。话虽如此,并非所有表都增长到20亿以上。事实上,大多数人都没有。

那么,你们是只对那些映射到潜在大表的类使用 long 类型,还是为每个持久类使用 long 类型只是为了保持一致?行业共识是什么?

我会暂时搁置这个问题,以便您可以与我们分享您的成功/恐怖故事。


答案 1

即使表没有变得超级大,长也可能是有利的,但具有高周转率,即如果经常删除/插入行。自动生成/顺序的唯一标识符可能会递增到一个较大的数字,而表仍然很小。

我通常使用Long,因为在我的大多数项目中性能优势并不明显,但是由于溢出而导致的错误将非常明显!

这并不是说 Int 不是其他人的方案(例如数据处理或复杂查询系统)的更好选择。只需清楚风险/收益以及它们如何影响您的特定项目即可。


答案 2

我不知道“烧伤”是什么。在需要时从int更改为long并不困难。转换在SQL中是直接的,然后它只是在客户端代码中搜索和替换(或者在持久性层中进行更改,然后编译并查看哪些中断)。您正在从一种整数类型移动到另一种整数类型,因此您不必担心微妙的转换问题或截断。

从浮点到双倍会困难得多。


推荐