2011-07-27 6 views
6

私はtwitter tweet ID番号を格納する必要があります。これらの数字は大きく、16桁大きいです。私はそれらを格納するためにMySQLのbigintを使用するwheterに不思議に思っていましたか?または別の方法があります。 bigintは何桁まで扱うことができますか?私は仕様を見てみましたが、それは明確ではありませんでした。そのような大きな数値をmysqlテーブルに格納する際の制限は何ですか?ありがとう!bigint in mysql

+2

馬鹿馬鹿ないかもしれませんが、TwitterがIDまたは明日の番号を使用して文字列を使用するかどうかは制御できません。私がデータ型を制御できず、文字列に行くことができなければ、まず安全に行くだろう。 – Wrikken

答えて

6

bigintは、-9223372036854775808〜9223372036854775807に符号付き、0〜18446744073709551615に符号なし(the mysql docs)となる64ビットです。 MySQLのマニュアルから

2

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

大きい整数。署名範囲は、-9223372036854775808 9223372036854775807 に符号なし範囲でIDの生成があなたのコントロール外にあるときに、現在のIDは、BIGINT(64ビット符号付き)に収まる場合でも18446744073709551615

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

+0

これはBIGINTタイプの定義ですが、OPが何を使用すべきか、BIGINTを使用すべきかどうかという質問には答えません。提案のために – thomasrutter

4

に0でありますテキスト文字列として保存する方が安全です。

さらに大きくなるだけでなく(BIGINTをオーバーフローさせることはほとんどありません)後で同じテーブルの他のシステムから接頭辞とストアIDを追加することもできます。または、将来のAPIが非数値IDを使用する可能性があります。

+0

+1。 –

+0

文字列よりもはるかに高速であるmysqlの多くのことをしたいのでない限り... – DougW

+0

...実際にはIDなどの操作に便利でしょうか? –

1

BigIntは方法です。このための効率的なデータ型は存在しません。 BigIntは2^64までのヌーバーを格納でき、これは約25桁です。

2

私は、Wrikkensaidについては、2つのIDを格納する価値があると思います。

  • 実際のツイートIDの文字列(VARCHAR)ですので、あなたはそれを持っています(文字の場合も同様です)。あなたは、このようなリンクテーブル

2

あなたがPHPを使用していると言うように、内部のもののために使用

  • INT。 PHPの組み込み数値型はマシン依存であり、x86では整数値として32ビットしか使用しないことに注意する必要があります。整数でないか、32ビット範囲外の値は浮動小数点型を使用して格納されます。浮動小数点型は、非常に大きな数値の場合は最後の桁に正確ではないように設計されています。

    あなたのアーキテクチャにかかわらずポータブルな大きな整数を許すPHPのライブラリがありますが、idフィールドを常に文字列として保持する方が簡単かもしれません。あなたはそれについて何も計算をしていないので、識別子として扱うだけで大きな問題になるはずはありません。