waste of time

主にPHP

MySQL インデックスめも

仕事でDBにインデックス貼る機会があったからめも。
初めてだったのでインデックスってなんなのってとこから調べてやった。

  • とりあえずEXPLAINつけて見てみる
  • typeでALLでてたりExtraでUsing temporary, Using filesortは改善の余地あり
  • 基本的にクエリのWHERE句から順番に複合インデックス作ればよい
  • 複合インデックスは順番が大事
  • 選択性の高いカラムを左端に
  • インデックス利用できないならSQLでORDER BYするよりプログラムでソートした方が断然はやい
  • インデックス使える時と使えない時がある。例えば複数の範囲条件とか!=には使われない
  • IN句をうまいこと使う技がある
  • インデックス増えると今度は更新が遅くなるのでほどほどに
  • ビューテーブル使ってる時めんどくさいことになる
  • いろいろ理論あるけど知識から入るの難しそうだからやって慣れる