我需要存儲twitter推特ID號碼,而且這些號碼很大,比如16位數字大。我想知道在MySQL中使用bigint來存儲它們嗎?還是有另一種選擇。 bigint可以處理多少個數字?我試着看規格,但不清楚。在mysql表中存儲這些大數字有什麼限制?謝謝!bigint in mysql
回答
bigint是64bit,其符號爲-9223372036854775808到9223372036854775807,並且符號爲0到18446744073709551615,根據the mysql docs。
從MySQL手冊
BIGINT [(M)] [UNSIGNED] [ZEROFILL]
甲大的整數。符號範圍是-9223372036854775808到 9223372036854775807無符號的範圍是0到18446744073709551615
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
這是一個什麼是BIGINT類型的定義,但是它沒有回答OP應該使用什麼以及他是否應該使用BIGINT的問題。 – thomasrutter
即使目前的ID適合在BIGINT(64位帶符號的),當ID生成是您的控制之外,將其作爲文本字符串存儲更安全。
不僅它可以變得更大(當然,它不可能會溢出BIGINT);還可以稍後在同一個表中添加來自其他系統的前綴和商店標識。或者,也許一些未來的API可能會使用非數字ID
BigInt是要走的路。沒有更高效的數據類型。 BigInt可以存儲高達2^64的nubers,大約是25位。
你說你正在使用PHP。您需要記住,PHP的內置數值類型是依賴於機器的,並且在x86上僅使用32位作爲整數值。非整數值或超出32位範圍的值將使用浮點類型進行存儲,而浮點類型的設計並不精確到非常大數字的最後一位數字。
雖然PHP的庫允許使用可移植的大整數,而不管您的架構如何,但只要將id字段始終保留爲字符串可能會更容易。既然你不會對它做任何算術,只是把它當作一個標識符,這應該不是一個大問題。
- 1. Mysql bigint到int
- 2. Mysql Bigint VS Varchar
- 3. bigint和bigint之間的mysql差異(20)
- 4. Waterline BIGINT type with sails-mysql
- 5. mysql alter int column to bigint with foreign keys
- 6. MYSQL IN
- 7. BigInt轉換(gmp Bigint to botan bigint)
- 8. MySQL不使用主BIGINT指數
- 9. mysql select不工作IN IN
- 10. Mysql bigint,decimal(18,0)或char(10)for primary
- 11. MySQL的BIGINT VS JSON模式整數
- 12. C++ usigned long long range vs mysql unsigned bigint range
- 13. 在MySQL中的BigInt列上索引
- 14. Laravel插入一個BIGINT到MySQL錯誤
- 15. Mysql 5.0.91 BIGINT列值與'1'的比較
- 16. MySQL的性能VS獨特BIGINT
- 17. MYSQL如何將varchar轉換爲bigint
- 18. 關於無符號bigint的MySQL BETWEEN
- 19. MySQL計算大數BIGINT繞過
- 20. MYSQL GROUP_CONCAT和IN
- 21. MySQL列IN
- 22. mysql - 替代IN()
- 23. MySQL LIKE IN()?
- 24. 「Reverse GROUP_CONCAT」in MySQL?
- 25. 「where in」mysql clause
- 26. Muetexes in perl&MySQL
- 27. mySQL bind_param與IN(?)
- 28. MySQL IN問題
- 29. MySQL IN for strings
- 30. MySQL的WHERE IN()
可能聽起來很愚蠢,但您無法控制Twitter是否使用id作爲數字,或者明天是否使用字符串。如果我沒有對數據類型的控制權,我會先安全起見,然後轉換成字符串......但是,我已經達到了一定程度,我授予您。 – Wrikken