我需要存储推特推特ID号,这些数字很大,比如16位数。我想知道在mysql中使用bigint来存储它们吗?还是有另一种选择。 bigint可处理多少位数?我试着查看规格,但目前尚不清楚。在mysql表中存储这么大的数字有什么限制?谢谢!
答案 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)
答案 4 :(得分:2)
你说你使用的是PHP。您需要记住,PHP的内置数字类型与机器有关,而在x86上,整数值仅使用32位。非整数或超出32位范围的值将使用浮点类型存储,浮点类型的设计精确到非常大数字的最后一位数。
尽管有适用于PHP的库,无论您的架构如何都允许可移植的大整数,但是将id字段保持为字符串可能更容易。既然你不会对它进行任何算术,只需将其作为标识符处理,这应该不是一个大问题。
答案 5 :(得分:1)
BigInt是要走的路。没有更高效的数据类型。 BigInt可以存储最多2 ^ 64的数字,大约是25位数。