【发布时间】:2010-10-01 05:53:01
【问题描述】:
为什么有人会对简单的整数 ID 列使用 numeric(12, 0) 数据类型?如果您有理由说明这比 int 或 bigint 更好,我想听听。
我们没有对此列进行任何数学运算,它只是一个用于外键链接的 ID。
我正在编制一份关于产品的编程错误和性能问题的列表,并且我想确保他们没有出于某种合乎逻辑的原因这样做。如果您点击此链接: http://msdn.microsoft.com/en-us/library/ms187746.aspx
...您可以看到 numeric(12, 0) 使用 9 个字节的存储空间并且限制为 12 位,如果包括负数,则总共有 2 万亿个数字。当一个人可以使用 bigint 并获得 1000 万倍的数字而少一个字节的存储空间时,为什么还要使用它。此外,由于这是用作产品 ID,因此标准 int 的 40 亿个数字已经足够了。
所以在我拿起火炬和音叉之前 - 告诉我他们会说些什么来为他们辩护?
不,我并不是无中生有,软件中有数百个类似的问题,这一切都会导致巨大的性能问题并在数据库中占用过多的空间。我们为这种垃圾支付了超过一百万美元……所以我很认真地对待它。
【问题讨论】:
标签: sql database oracle tsql types