Help us understand the problem. What is going on with this article?

EXPLAINを見て気をつけること(自分なりの忘付録)

More than 5 years have passed since last update.

EXPLAINについて

mysqlにはexplainというものがある。
これはクエリを実行した際に、
「mysqlが作成したクエリをどのように判断して実行したのか」というものが
見れるようなものです。
(データへのアクセス方法がわかるものです。)

使い方

使い方は簡単でSQL文の一番先頭にexplainをつけるだけです。
ex)
EXPLAIN SELECT * FROM テーブル名;

結果)
+----+-------------+-------+------+---------------+------+---------+------+-------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+-------+-------+
| 1 | SIMPLE | emp | ALL | NULL | NULL | NULL | NULL | 62004 | |
+----+-------------+-------+------+---------------+------+---------+------+-------+-------+
1 row in set (0.00 sec)
だいたいこんな感じのものが表示される

カラムについて

select_type

単一の表を参照する場合は「SIMPLE」になるはず。UNIONを使用すると「PRIMARY」「UNION」「UNION RESULT」なども現れるくると思います。

type

const・・・PKやUNIQUEインデックスの等価検索
ref・・・UNIQUEでないインデックス使用検索時。セカンダリインデックスを禁止していたら問題大あり
range・・・INDEXを用いた範囲検索時
index・・・INDEX内のフルスキャン
ALL・・・全表走査。インデックスが効いていない状態。

key

keyには「PRIMARY KEY」かセカンダリインデックス名が入っているべき。のはず。
セカンダリインデックスを禁止していればPRIMARY KEY以外入ってはいけない。

EXTRA(付与情報)

Using where
    頻繁に出力される追加情報であまり気にする必要はない
Using index
    クエリがインデックスだけを用いて解決できることを示す。
    カバリングインデックスを利用している場合などに表示される。
Using filesort
    ソートを行っている。適切なインデックスを
    張ることで改善されるかもしれないことを表す。

t_takuya50
都内勤務のエンジニア。 天下一品大好き。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした