Computer365120 views
高校国語785655 views
高校生物549842 views
中学英語808712 views
高校倫理1433119 views
高校化学2913383 views
高校日本史189857 views
中学数学621382 views
いろは2986023 views
LaTeX957300 views
Help
Tools

English

MySQL のデータ型と選び方

MySQL のテーブル設計で最初に直面するのが、カラムごとのデータ型選定です。適切なデータ型を選ぶことで、ストレージ効率やクエリ性能が大きく変わります。

主なデータ型カテゴリ

MySQL のデータ型は大きく分けて、数値型・文字列型・日付時刻型・その他の4カテゴリに分類されます。

カテゴリ代表的な型用途
数値型INT, BIGINT, DECIMALID、金額、数量
文字列型VARCHAR, TEXT, CHAR名前、説明、コード
日付時刻型DATETIME, TIMESTAMP作成日、更新日

それぞれのカテゴリにはさらに細かい型が存在し、用途に応じて使い分ける必要があります。

データ型選定の基本方針

まず意識すべきなのは「必要十分な型を選ぶ」という原則です。大は小を兼ねるという考え方で BIGINT や TEXT を多用すると、インデックスサイズが膨らみ、クエリ性能が低下します。

小さい型を選ぶメリット

ストレージ消費が少なく、インデックス効率が高い。メモリキャッシュにも多くのデータが乗るため、全体的なパフォーマンスが向上する。

大きい型を選ぶリスク

ディスクとメモリの使用量が増え、バッファプールの効率が下がる。将来の拡張を見越して過剰に大きい型を選ぶのはアンチパターン。

たとえば、ステータスコードのように値の範囲が限られている場合は TINYINT(1バイト)で十分であり、INT(4バイト)を使う理由はありません。

よくある選定ミス

実務でありがちなのが、すべての整数カラムに INT を使ってしまうケースです。年齢や数量のように小さな値しか入らないカラムには SMALLINT や TINYINT が適しています。

金額に FLOAT を使う

浮動小数点型は丸め誤差が生じるため、金額の計算で不正確な結果になります。金額には必ず DECIMAL 型を使いましょう。

なんでも VARCHAR(255) にする

VARCHAR(255) は便利ですが、実際のデータ長に合わせて設定するのが望ましいです。インデックス作成時にバッファサイズに影響する場合があります。

NULL の扱い

データ型を決めるとき、NULL を許容するかどうかも設計の重要なポイントです。NULL はストレージ上の追加コストがわずかにあり、比較演算の際に三値論理が発生するため、意図しないバグの原因にもなります。明確なデフォルト値が存在するカラムには NOT NULL と DEFAULT を設定しておくのが安全です。

型選定はテーブル設計の土台であり、あとから変更するとデータ移行やアプリケーション改修のコストが発生します。最初の段階で要件をしっかり把握し、適切な型を選ぶことが重要です。