いくつかの予備テストから、INT(11)またはDECIMAL(5,0)のどちらを使用するかにかかわらず、ストレージ要件は実際に同じであるようです。次のクエリで2つのテーブルを作成しました。
CREATE TABLE Table1(id INT(11));
CREATE TABLE Table2(id DECIMAL(5,0));
各テーブルに単一の値を挿入し、そして両方のテーブルについては、以下を実行した後、私は、各行のDATA_LENGTH 7.挿入追加の行は、7つのバイトのいずれかによって、テーブルのサイズを増加させたことを見ました。
SELECT * FROM INFORMATION_SCHEMA.tables where table_name='Table1';
このようにすべてのものと同様に、いくつかのテーブルを作成して確認するのが最も簡単な方法です。この場合、INT(11)は余分なスペースを必要としないため、プロセッサが直接処理できるより基本的なデータ型なので、おそらく処理が少なくて済みます。 DECIMALを使うとき、MySQLはプロセッサが実際に使うことができるフォーマットに数値を変換しなければなりません。おそらくこの場合は整数であり、おそらくフォーマット間を行き来するオーバーヘッドがあります。
ありがとうございます。私は同じように直感的に考えました。 – Haradzieniec
私はもっと良い解決策、mediumint(9)-3バイト、[-8388608 ... 8388607]を見つけたと思います。ありがとうございました! – Haradzieniec