MEDIUMINT型【medium integer】
概要

リレーショナルデータベースでは、表(テーブル)の各列(フィールド)に格納するデータの種類をデータ型として指定する。整数を扱う数値型には複数の種類があり、1バイトの「TINYINT型」、2バイトの「SMALLINT型」、4バイトの「INT型」、8バイトの「BIGINT型」などがSQL標準で規定されている。
MEDIUMINT型はこれらの標準的な整数型とは別に、MySQLやMariaDBなどの特定のRDBMSで独自に実装されている型である。符号付き(SIGNED)の場合に格納できる値の範囲は-8,388,608から8,388,607(-2の23乗から2の23乗-1)であり、符号なし(UNSIGNED)の場合は0から16,777,215(0から2の24乗-1)となる。SMALLINT型の符号なし上限である65,535を超えるが、INT型の上限である約40億までは必要としない場合に、MEDIUMINT型が選択肢となる。
MySQLでは列定義時に「MEDIUMINT」(符号付き)または「MEDIUMINT UNSIGNED」(符号なし)と指定して利用する。自動採番を行うAUTO_INCREMENT属性とも組み合わせられ、主キーや識別子の格納に使われることがある。商品の在庫数、閲覧回数のカウンタ、座席番号や行政区分のコードなど、数百万件程度の範囲に収まる整数値を扱う列で用いられる。ただし、将来のデータ増加を考慮せずに選択すると、上限到達時に型変更が必要になる場合がある。
行数が膨大なテーブルでは、列ごとのバイト数の差が積み重なり、ストレージ容量やディスクI/Oに影響を与える。1列あたり1バイトの削減であっても、数百万件から数千万件規模のデータでは全体の容量やクエリ処理速度に関わるため、格納する値の想定範囲に応じて適切な整数型を選ぶことが設計上重要である。MEDIUMINT型は標準SQLに含まれない拡張機能であるため、他のRDBMSへ移行する際には互換性の問題が生じやすく、移行先ではINT型など別の整数型に置き換えられることが多い。