2011-07-27 86 views
6

我需要存儲twitter推特ID號碼,而且這些號碼很大,比如16位數字大。我想知道在MySQL中使用bigint來存儲它們嗎?還是有另一種選擇。 bigint可以處理多少個數字?我試着看規格,但不清楚。在mysql表中存儲這些大數字有什麼限制?謝謝!bigint in mysql

+2

可能聽起來很愚蠢,但您無法控制Twitter是否使用id作爲數字,或者明天是否使用字符串。如果我沒有對數據類型的控制權,我會先安全起見,然後轉換成字符串......但是,我已經達到了一定程度,我授予您。 – Wrikken

回答

6

bigint是64bit,其符號爲-9223372036854775808到9223372036854775807,並且符號爲0到18446744073709551615,根據the mysql docs

2

從MySQL手冊

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

甲大的整數。符號範圍是-9223372036854775808到 9223372036854775807無符號的範圍是0到18446744073709551615

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

+0

這是一個什麼是BIGINT類型的定義,但是它沒有回答OP應該使用什麼以及他是否應該使用BIGINT的問題。 – thomasrutter

4

即使目前的ID適合在BIGINT(64位帶符號的),當ID生成是您的控制之外,將其作爲文本字符串存儲更安全。

不僅它可以變得更大(當然,它不可能會溢出BIGINT);還可以稍後在同一個表中添加來自其他系統的前綴和商店標識。或者,也許一些未來的API可能會使用非數字ID

+0

+1的建議。 –

+0

除非你想在mysql中使用整數比字符串快很多... – DougW

+0

......這實際上是對ID有用的操作......例如? –

1

BigInt是要走的路。沒有更高效的數據類型。 BigInt可以存儲高達2^64的nubers,大約是25位。

2

我認爲,關於什麼Wrikkensaid,這是值得存儲兩個ID。

  • 實際的tweet ID的字符串(VARCHAR),所以你有(以防萬一,他們決定去爲字符和)。

  • INT您使用內部的東西,如鏈接表

2

你說你正在使用PHP。您需要記住,PHP的內置數值類型是依賴於機器的,並且在x86上僅使用32位作爲整數值。非整數值或超出32位範圍的值將使用浮點類型進行存儲,而浮點類型的設計並不精確到非常大數字的最後一位數字。

雖然PHP的庫允許使用可移植的大整數,而不管您的架構如何,但只要將id字段始終保留爲字符串可能會更容易。既然你不會對它做任何算術,只是把它當作一個標識符,這應該不是一個大問題。