現在、30以上のテーブルデータベースのすべての自動インクリメントID列にINT(21)*を使用しています。
私たちはブログサイトであり、メンバー、コメント、ブログ投稿などを格納するテーブルがあります。
INT(21)id列の制限に達することはないと確信しており、次のことを知りたいと思います。
*私のデザインではありません。これをINT(10)と言うように減らすことを検討しているので、これを求めています。
[It]アプリケーションは、列に指定された幅よりも小さい幅の整数値をスペースで左パディングして表示するために使用できます。 (つまり、この幅は、結果セットとともに返されるメタデータに存在します。使用されるかどうかは、アプリケーションによって異なります。)
表示幅は、列に格納できる値の範囲や、列に指定された幅を超える値に対して表示される桁数を制限しません。たとえば、
INT(3)
として指定された列の通常のINT
の範囲は-2147483648〜2147483647であり、3文字で許可される範囲外の値は3文字を超えて表示されます。
INT(10)
またはINT(21)
は、保存できる値に影響を与えません。本当に懸念がある場合は、データ型を簡単にBIGINTに変更でき、私が認識している影響はありません。特定の期間(つまり、1か月)に作成されている新しいレコードの数を調べ、その履歴に基づいてINT値を最大化するのにかかる時間を確認します。
各intタイプの制限については、ここを参照してください: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
INT(21) == INT(100000)
に注意してください。括弧内の数字は、フィールドにゼロを埋め込むように指定した場合に、それに埋め込まれるゼロの数です。
署名されていないint
フィールドは、最大4294967295レコードを保持できます(上記のリンクを参照)。
スペースをとりすぎないでください。スペースは安いです。超えないことがわかっている列タイプを選択してください。 smallintを選択してスペースを節約すると、データベースがデータを保持できなくなると問題が発生します。