プログラミング、フリーダイビング、ブロックチェーンのブログ

プログラミング道場

私がおすすめするプログラミング教材のまとめ【書籍と動画】

プログラミング言語 スクリプト言語 コンパイル言語 アプリ開発 サーバー、インフラ、セキュリティなど 機械学習系 ゲーム開発 データベース 子供向け デザイン その他 おまけ まとめ この記事では、様々な書籍を紹介しました。 是非、自分に合 ...

続きを見る

MySQLのexplainの見方

更新日:

記事の内容


この記事では、MySQLのexplainコマンドの見方を紹介します。
explainコマンドとは、SQLの実行計画を教えてくれるコマンドです。
explainコマンドの見方を知っておけば、きっと効率の良いSQLを書く際に役立つはずです。

type

type 説明
const PRIMARY KEYまたはUNIQUEインデックスのルックアップによるアクセス
最速
eq_ref JOINにおいてPRIARY KEYまたはUNIQUE KEYが利用される時のアクセスタイプ
constと似ているがJOINで用いられるところが違う
ref PRIMARY KEYまたはUNIQUEインデックスのルックアップによるアクセス
最速
range インデックスを用いた範囲検索
index フルインデックススキャン
インデックス全体をスキャンする必要があるのでとても遅い
ALL フルテーブルスキャン
インデックスがまったく利用されていないことを示す
OLTP系の処理では改善必須

key

オプティマイザによって選択されたキー。

key_len

選択されたキーの長さ。
インデックスの走査は、キー長が短い方が高速です。
インデックスをつけるカラムを選ぶ時には、そのことを念頭に置いて下さい。

ref

検索条件で、keyと比較されている値やカラムの種類。
定数が指定されている場合はconstと表示される。
JOINが実行されている時には、結合する相手側のテーブルで検索条件として利用されているカラムが表示される。

row

そのテーブルからフェッチされる行数の見積もりです。
このフィールドはあくまでもテーブル全体の行数やインデックスの分散具合から導き出された大まかな見積もりなので、実際にフェッチされる正確な行数ではないので注意が必要です。

extra

カラム 説明
Using where 頻繁に出力される追加情報
WHERE句に検索条件が指定されており、なおかつインデックスを見ただけではWHERE句の条件を全て適用することが出来ない場合に表示される。
Using index クエリがインデックスだけを用いて解決できることを示す
Covering Indexを利用している場合などに表示される
Using filesort filesort(クイックソート)でソートを行っていることを示す
Using temporary JOINの結果をソートしたり、DISTINCTによる重複の排除を行う場合など、クエリの実行にテンポラリテーブルが必要なことを示す
Using index for group-by MIN()/MAX()がGROUP BY句と併用されているとき、クエリがインデックスだけを用いて解決できることを示す
Range checked for each record JOINにおいてrangeまたはindex_mergeが利用される場合に表示される
Not exists MySQL はクエリーに対する LEFT JOIN 最適化を実行でき、LEFT JOIN 条件に一致する 1 つの行が見つかったら、前の行の組み合わせについて、このテーブルでそれ以上の行を調査しません。

まとめ

explainコマンドを知ることは、高速のSQLを書く第一歩です。
是非、この記事を見ながらSQLの実行計画と格闘して下さい。
また、explainやshow statusといったコマンドの詳細については、この本に書かれています。

Good luck for your engineer life!

MySQLをより詳しく勉強したい人は、この記事を読んで下さい

MySQLの学習でおすすめの本と動画【2020年最新】

初心者向け【入門編】 書き込み式SQLのドリル SQLの基本である、CREATE、READ、UPDATE、DELETE、JOINなどを書きながら丁寧に覚えていきます。 GROUP BYやWHEREなども抑えており、初心者にはオススメできる本 ...

続きを見る


セキュリティをより詳しく勉強したい人は、この記事を読んで下さい

セキュリティの学習でおすすめの本と動画【2020年最新】

初心者向け 図解まるわかり セキュリティのしくみ イラストが豊富に入っているので、私はこの本が大好きです。 非常にわかりやすい、初心者向けのセキュリティ本です。 法律関係についても書かれているのは嬉しいですね^^ まんべんなく、セキュリティ ...

続きを見る

関連コンテンツ

-MySQL, プログラミング

Copyright© プログラミング道場 , 2020 All Rights Reserved Powered by AFFINGER4.