addictionwhite’s diary

考え中のことを整理と忘備録のために綴ります。ここに書かれている考えは翌日には変わる可能性があります

MySQLのexplainメモ

MySQLのExplain叩くたび指標を忘れてしまうのでメモ。
ほとんど引用文です(一番下の参考参照)。まず自分の頭に定着させたいものを抜擢した感じです。

とりあえずexplainしたときに見る列

  • type
  • rows
  • extra

type:

ALL: フルテーブルスキャンされているので最高に遅い。
index: 一見するとインデックスが使われているような感じがする値だが、実はフルインデックススキャンされているということ。

rows:

行数が少ないほどいい

extra:

Using where: indexだけではwhereを解決できないことを示している
Using temporary: テンポラリーテーブルを作成することを示している。あまり良くない
Using filesort: レコードがクイックソートされていることを示す かなり良くない

もちろん後になればなるほど処理が重くなるので、出来るだけそのようなクエリはさけて1番目や2番目の実行計画になるようにすると良いわけである。
1番目や2番目の実行計画になるようにするには、次のような点に注意しなければいけない。
最も大切なことはWHERE句における検索条件とソートする対象のカラムを一つのテーブルに集中させることである。

表示されているとステキな値
Using index


他にも考慮すべきところ多々あると思うのですが、
少しずつ積み上げていこうと思います(毎度一気に詰め込もうとして結局全て流れてしまうので)

参考(引用元)

MySQLのexplainとかについてしらべたときのメモ
https://qiita.com/lastcat_/items/de7b530a94fbcf9ba646

explainした時の重要ポイント(実例つき)
http://www.24w.jp/blog/?p=250

漢(オトコ)のコンピュータ道
http://nippondanji.blogspot.com/2009/03/using-filesort.html