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

プログラミング道場

自分の市場価値を知りたい人にオススメの記事です

【すぐできる】エンジニアとしての市場価値を診断してみよう!

エンジニアが市場価値を把握しておくべき理由 エンジニアは、なぜ市場価値を把握しておいた方がいいのか、まずはその理由について説明します。 エンジニアの市場価値を決める要素 エンジニアの市場価値を決める要素について説明します。 経験業務と年数 ...

続きを見る

私がオススメするプログラミング教材です

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

これからエンジニアになりたい人へ向けた本 私が書いた、「これからエンジニアになりたい人」に向けた本です。 最近、世間ではプログラミングの必要性が声高く叫ばれるようになりました。 子供向けには2021年からプログラミング教育が義務教育で実施さ ...

続きを見る

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やデータベースの学習でおすすめの本と動画(Udemy)【2022年最新】

初心者向け【入門編】 よくわかるSQL データベースやSQLになじみのない方にとっても、無理なく勉強できるように構成されている本です。 たくさんのサンプルが掲載されているのも嬉しいですね^^ 本書は、非常に読みやすく、初心者がSQLを理解す ...

続きを見る


セキュリティをより詳しく勉強したい人には、この記事がオススメです

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

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

続きを見る

関連コンテンツ

-MySQL, プログラミング

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