MySQL で利用可能な最大の整数のようBIGINT
ですね。
たとえば、BIGINT(80) を格納する必要がある場合はどうすればよいでしょうか。
Twitter API ドキュメントのどこかにあるように、これらの大きな整数varchar
を
あるタイプを別のタイプよりも使用する選択の背後にある本当の理由はどれですか?
大きな整数は実際には20桁に制限されておらず、64ビットで表現できる数に制限されています(たとえば、99,999,999,999,999,999,999
20桁の長さであるにもかかわらず、その数は有効な大きな整数ではありません)。
この制限がある理由は、ネイティブ形式の整数は基盤となるハードウェアによって比較的高速に操作できるのに対し、数値のテキストバージョン(傾向がある)は一度に1桁処理する必要があるためです。
最大の64ビット符号なし整数よりも大きい数値18,446,744,073,709,551,615
が必要な場合は、それを(または他のテキストフィールド)として格納する必要があり、varchar
数学的な操作をあまり行う必要がないことを期待します。
または、範囲は広いが精度が低い浮動小数点数、またはdecimal(65,0)
列タイプとして、整数値に65桁を与えることができる10進数を調べることができます。
を指定できますがnumeric(65,0)
、大きくする必要がある場合は、varcharが必要になります。
どちらかを選択する理由は、使用法、効率、およびスペースです。intを使用する方が、bigintや、数学を行う必要がある場合は数値よりも効率的です。
最大のストレージ効率が必要な場合は、その大きな整数を任意のバイナリ文字列として格納できます。
しかし、アプリケーションでも 64 ビットを超える整数を処理する必要があるため、それだけの価値があるかどうかはわかりません。これも、強い理由がなければやりたいことではありません。
物事をシンプルに保ち、 を使用することをお勧めしますvarchar
。
BIGINT は、定義により 8 桁に制限されています。DECIMAL 型の最大桁数は 64 です。より高い精度の値を格納するには VARCHAR を使用する必要があり、そのような値を直接計算できないことに注意してください。