実践ハイパフォーマンスMySQL 4章 スキーマとデータ型の最適化 メモ

めもめも

  • 基本的に最小のデータを選べ。
    • ex. tinyintで済むならtinyint
  • enum型は内部的には整数で扱う。
    • ex. ("one", "two", "three")は1,2,3
  • BLOBとTEXT型はmax_sort_lengthでsortする。文字列全体でsortするのではなくmax_sort_lengthで行う。
    • ex. どういうことか理解してないので実験する。
  • 日付のデータ型でテーブルに保存するときはTimestampを使う。
    • ex. DateTimeは5~8バイト、Timestampは4~7バイトなので効率が良い
  • 正規化・非正規化のトレードオフ
  • ALTER TABLEするときは基本的に新しいスキーマの空テーブルを作り、既存のレコードを新しい空テーブルにInsertして、Indexの再構築を行う。※データサイズ次第ではめっちゃ時間がかかる
  • ただし、空テーブルを作らずに済むパターンもある
    • .ex(enumとsetの定数の追加、AUTO_INCREMENTの削除)

まとめ

  • 極力小さいサイズのデータ型を選択する
  • 遅いクエリ・構造を避ける
  • IDは整数を使う