通常のintよりもmysqlテーブルでsmallintデータ型を使用すると、実際にメモリ使用量が改善されますか? いずれにせよ、ハードウェアはすべてのデータに完全な 64 ビット ワード サイズを割り当てるのではないでしょうか? 完全な単語を割り当てない場合、メモリに割り当てられた 64 ビットの単語から複数の smallint または tinyint を解析する必要があるため、パフォーマンスが低下することはありませんか?
Status
基本的に、列に格納されている値の範囲が smallint の最大/最小範囲を決して超えないことがわかっていると仮定すると、次の表を次の表よりも使用する設計/メモリ/パフォーマンス上の利点はありますか? 洞察をいただければ幸いです。
create table `TestTableWithSmallInt` (
`ID` bigint(20) NOT NULL AUTO_INCREMENT,
`Status` smallint(11) DEFAULT 0,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
create table `TestTableWithInt` (
`ID` bigint(20) NOT NULL AUTO_INCREMENT,
`Status` int(11) DEFAULT 0,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;