似乎BIGINT
是 MySQL 上可用的最大整数,对吧?
例如,当您需要存储 BIGINT(80) 时该怎么办?
为什么在某些情况下,比如 Twitter API 文档中的某个地方,他们建议我们将这些大整数存储为varchar
?
选择使用一种类型而不是另一种类型的真正原因是什么?
大整数实际上并不限于 20 位,它们仅限于可以用 64 位表示的数字(例如,99,999,999,999,999,999,999
尽管该数字是 20 位长,但它不是有效的大整数)。
您有此限制的原因是,底层硬件可以相对快速地操作本机格式整数,而数字的文本版本(往往)需要一次处理一个数字。
如果您想要一个大于最大 64 位无符号整数的数字,18,446,744,073,709,551,615
那么您需要将其存储为varchar
(或其他文本字段),并希望您不需要对其进行太多数学操作。
或者,您可以查看具有较大范围但精度较低的浮点数,或者应该能够为您提供 65 位整数值的十进制数,decimal(65,0)
作为列类型。
您可以指定 a numeric(65,0)
,但如果您需要变大,则需要一个 varchar。
选择一个而不是另一个的原因是使用、效率和空间。使用 int 比 bigint 更有效,或者,我相信,如果您需要对其进行数学运算,则使用 numeric。
BIGINT 根据定义限制为 8 位。DECIMAL 类型的最大位数为 64。您必须使用 VARCHAR 来存储精度更高的值,并注意这些值没有直接的数学运算。