sql - 在 T-SQL 中有任何理由使用数字而不是 int 吗?

标签 sql database oracle tsql types

为什么有人会对简单的整数 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 亿个数字已经绰绰有余。

所以在我拿起手电筒和干草叉之前 - 告诉我他们在辩护中会说些什么?

不,我不是无中生有,软件中有数百个这样的问题,它们都会导致巨大的性能问题,并在数据库中使用过多的空间。我们为这个废话支付了超过 100 万美元...所以我很认真地对待它。

最佳答案

也许他们习惯于使用 Oracle?

包括 int 在内的所有数字类型都在所有平台上标准化为标准的单一表示形式。

关于sql - 在 T-SQL 中有任何理由使用数字而不是 int 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/440779/

相关文章:

oracle - 如何更改 Oracle 日期变量中存储的小时值?

mysql - java.sql.Clob 读取 : weird results b/w MySQL and Oracle

sql - IF EXISTS 在 INSERT、UPDATE、DELETE 之前进行优化

sql - 当执行将选择查询作为联接的查询时,SQL Server 2005返回错误

sql-server - ON 子句可变时如何连接两个表

mysql - 此更新查询尝试使用 concat() fun 更新表有什么问题

c# - 方法更新C#连接错误

java - 通过静态标识符从数据库接收数据(Java 中的示例)

php - 关于连接两个mysql表的问题

sql - 根据其他列值按查询分组