使用しているMySQLのバージョンによって異なる場合があります。 こちら を参照してください。 。
MySQL 5.0.3より前は、DECIMAL型は文字列として格納されていたため、通常は低速でしたが、MySQL 5.0.3以降、DECIMAL型はバイナリ形式で格納されるため、上記のDECIMALのサイズでは、パフォーマンスに大きな違いがあります。
主なパフォーマンスの問題は、さまざまなタイプが占めるスペースの量でした(DECIMALの方が遅い)。 MySQL 5.0.3以降では、これはそれほど問題ではないように見えますが、クエリの一部として値に対して数値計算を実行する場合は、パフォーマンスに多少の違いがある可能性があります。ドキュメントに私が見ることができる表示がないので、これはテストする価値があるかもしれません。
編集: int(10) unsigned
に関して 、私はこれを4バイト整数として額面通りに受け取りました。ただし、これの最大値は4294967295であり、DECIMAL(10,0) unsigned
と同じ範囲の数値を厳密に提供しません。 。
@Unreasonが指摘したように、bigint
を使用する必要があります 10桁の数字の全範囲をカバーし、サイズを最大8バイトにプッシュします。
よくある間違いは、MySQLで数値の列タイプを指定するときに、角かっこ内の数値が格納できる数値のサイズに影響を与えると考えることがよくあることです。そうではありません。数値の範囲は、純粋に列のタイプと、それが符号付きか符号なしかによって決まります。括弧内の数字は結果を表示するためのものであり、列に格納されている値には影響しません。また、ZEROFILL
を指定しない限り、結果の表示に影響はありません。 列のオプションもあります。