2017-11-26 8 views
0

私はCSVデータベースをMySQLに変換したいのですが、データベーステーブルに新しい行を追加することは絶対にありません。私は各テーブルの最大IDを知っています。例:9898548。最大IDを知っている場合、MySQLの計算サイズ

intサイズを計算する適切な方法は?これにはCEIL(LOG2(last_id))で十分でしょうか?私の例では、LOG2(9898548)= 23.2387なのでint(24)?これは正しいです ?

+0

INTサイズがなかれ4つのバイトで見ます... int(24)も4バイトです.24はゼロフルオプションのみをカウントします。これはコンピュータにMySQLのドキュメント(https://dev.mysql.com/doc/refman/5.7/en/)は必要ありません。 integer-types.html)は、最大値について非常に明確です。 –

答えて

0

テーブルを定義しているときに最大値を知っている場合は、最大テーブルサイズを参照できます。数値サイズの表については、http://dev.mysql.com/doc/refman/5.7/en/integer-types.htmlを参照してください。

IDは通常正であり、符号なしの数字を使用できます。あなたのケースでは、9898548は16777215(符号なしのMEDIUMINTの最大値)よりも小さく、スペース効率の高いストレージオプションになります。あなたの計算は正しいです。 24ビットまたは3バイト、またはUNSIGNED MEDIUMINTが必要です。

CREATE TABLE your_table (id UNSIGNED MEDIUMINT PRIMARY KEY); 

数字の入った括弧は、MySQLが数字を正しく表示できるようにするためのもので、ストレージサイズには何もしません。したがって、INT(11)とINT(24)は、同じ数の範囲を確実にすることができます。しかしINT(11)で定義されたものは、その数がより少なくても列幅が11桁に等しい数だけ表示されます。 http://dev.mysql.com/doc/refman/5.7/en/numeric-type-attributes.html

「このオプションの表示幅が左パディングスペースでそれらをすることによって列に指定された幅よりも小さい幅を有する整数値を表示するためにアプリケーションによって使用されてもよい」

0

はい、この場合、少なくとも24ビット(3バイトに等しい)の整数型が必要です。これを満たすMySQLで最小のものはthe documentationによるUNSIGNED MEDIUMINTです。

編集:UNSIGNEDが追加されました。

関連する問題