bigint in mysql


bigint in mysql

我需要存储twitter tweet ID号,这些数字很大,比如16位数字。我想知道是否在mysql中使用bigint来存储它们?或者还有其他选择吗?bigint可以处理多少位数字?我试着看说明书,但看不清楚。在mysql表中存储如此大的数字有什么限制?谢谢!

bigint为64位,有符号值为-9223372036854775808到9223372036854775807,无符号值为0到18446744073709551615,根据mysql文档

即使当前ID适合BIGINT(64位signed),当ID生成超出您的控制范围时,将其存储为文本字符串更安全。

不仅可以变得更大(好吧,它不太可能溢出BIGINT);还可以稍后添加前缀并将来自其他系统的id存储在同一个表中。或者将来的API可以使用非数字id

从MySQL手册

BIGINT[(M)] [UNSIGNED] [ZEROFILL]

大整数。带符号的范围是-9223372036854775808到9223372036854775807. 无符号范围为0 ~ 18446744073709551615

http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html

我认为,根据Wrikken所说的,存储两个id是值得的。

  • 字符串(VARCHAR)的实际推文ID,所以你有(只是以防万一他们决定去字符)。

  • INT,用于内部内容,如链接表

你说你正在使用PHP。您需要记住,PHP的内置数字类型是与机器相关的,在x86上,整数值仅使用32位。非整数或32位范围之外的值将使用浮点类型存储,对于非常大的数字,浮点类型不能精确到最后一位。

虽然有些PHP库允许移植大整数,而不管您的体系结构如何,但将id字段始终保持为字符串可能更容易。因为你不会对它做任何算术运算,只是把它当作一个标识符,这应该不是一个大问题。

BigInt是可行的方法。没有比这更有效的数据类型了。BigInt最多可以存储2^64,也就是25位数字。