在mysql中的bigint

时间:2011-07-27 22:05:16

标签: php mysql

我需要存储推特推特ID号,这些数字很大,比如16位数。我想知道在mysql中使用bigint来存储它们吗?还是有另一种选择。 bigint可处理多少位数?我试着查看规格,但目前尚不清楚。在mysql表中存储这么大的数字有什么限制?谢谢!

6 个答案:

答案 0 :(得分:6)

根据the mysql docs,bigint为64位,签名为-9223372036854775808至9223372036854775807,无签名为0至18446744073709551615。

答案 1 :(得分:4)

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

它不仅可以变得更大(嗯,它不可能溢出BIGINT);但您也可以稍后在同一个表中的其他系统中添加前缀和存储ID。或者未来的某些API可能会使用非数字ID

答案 2 :(得分:2)

来自MySQL手册

  

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

     

一个大整数。签署的范围是-9223372036854775808到   9223372036854775807.无符号范围是0到18446744073709551615

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

答案 3 :(得分:2)

我认为,就Wrikken said而言,值得存储两个ID。

  • 实际推文ID的字符串(VARCHAR),这样你就可以了(以防万一他们决定去找字符)。

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

答案 4 :(得分:2)

你说你使用的是PHP。您需要记住,PHP的内置数字类型与机器有关,而在x86上,整数值仅使用32位。非整数或超出32位范围的值将使用浮点类型存储,浮点类型的设计精确到非常大数字的最后一位数。

尽管有适用于PHP的库,无论您的架构如何都允许可移植的大整数,但是将id字段保持为字符串可能更容易。既然你不会对它进行任何算术,只需将其作为标识符处理,这应该不是一个大问题。

答案 5 :(得分:1)

BigInt是要走的路。没有更高效的数据类型。 BigInt可以存储最多2 ^ 64的数字,大约是25位数。