目次
1.EXPLAINとは
2.各項目の意味
3.チェックすべきところ
EXPLAINとは
インデックスがどう働いているか確認出来る
クエリチューニングを行うときまず最初に行うのがEXPLAIN
EXPLAINの使い方
クエリの頭にEXPLAINをつけて流すと「実行計画」と呼ばれるものが出力される
最後に¥Gをつけると縦に出力されて読みやすくなります
実行計画はデータ量によって全く違うものになるので、本番と近い環境で行いましょう
#各項目の意味するところ
id・・テーブル読み込みの順番
select_type・・クエリの種類
table・・該当テーブル
type・・テーブルにどのようにアクセスしているか
possible_keys・・使用可能なインデックス
key・・possible_keysの中からオプティマイザによって選ばれ有効になっているインデックス
key_len・・インデックスが有効になっている対象カラムの長さ(バイト)
ref・・keyで比較されているカラム名(定数が指定されているときはconstと表示される)
rows・・フェッチされる行数の見積もり(正確なものではない)
Extra・・インデックスの効き具合やソートの仕方etc
チェックすべきところ
type
ALLやINDEXになっている場合はチューニング必須
ALLはインデックスが効いていない状態でテーブルを全スキャンしているので大変遅い
INDEXはインデックス全体をスキャンしている状態でこちらも遅い
インデックスの最適化が必要
Extra
Using temporary, Using filesortでrowsが多い場合はチューニング必須
order byを使ったクエリで、全てのテーブルが結合されたのち並び替えが行われている状態で遅い
結合前にインデックスによってソートをかけることで解消できる
とりあえず以上
別途補足します