0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MySQL EXPLAINを調べた

Posted at

MySQL Explain

MySQL Explainとは、DBがデータを探す一連の過程を人が読みやすくDB結果セットに示すもの。
MySQL Explainを使って、既存のクエリをチューニングすることができるだけでなく、インデックス戦略策定などのパフォーマンスの最適化のための全般的な業務を処理することができる。

使い方

EXPLAIN [EXTENDED] SELECT ... FROM ... WHERE ...
項目 説明
id select IDでSELECTを区別する番号
table 参照するテーブル
select_type selectのタイプ
type タイプ
possible_keys データを照会するときDBで使用できるインデックスリスト
key 実際に使うインデックス
key_len 際に使うインデックスの長さ
ref 中のインデックスと比較するカラム
rows クエリの実行時に調べる行
extra 追加情報

出力結果(例)

********************** 1. row **********************
           id: 1
  select_type: SIMPLE
        table: categories
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 4
        Extra: 
1 row in set (0.00 sec)

select_type

SIMPLE : サブクエリや「union」がない最も単純なselect文
PRIMARY :最も外側のselect文
DERIVED :from文の中にあるサブクエリのselect文
SUBQUERY :最も外側のselect文のサブクエリ
DEPENDENT SUBQUERY : 基本的にSUBQUERYのようなタイプで、最も外側のselect文に「依存性」を持つサブクエリのselect文
UNION : union問い合わせ第二select文
DEPENDENT UNION : 外クエリに依存性を持つunion問い合わせ第二select文

type

system:0個または1つのrowを持つテーブル
const:テーブルに条件を満たしているレコードが一つであるとき、定数扱い
eq_ref:primary keyやunique not null columnに生成されたインデックスを使用して、結合している場合
ref:インデックスで指定されたカラム同士の '='、 '<=>'などの演算子を使用した比較で行われる結合
unique_subquery:1つの結果だけを返す 'IN'が含まれているサブクエリの場合
index_subquery:unique_subqueryと似ていますが、複数の結果を返す
range:特定の範囲のrowsをマッチングさせるインデックスが使用されている場合。 BETWEENやIN、 '>'、 '> ='などが使用される
all:結合時にすべてのテーブルのすべてのrowをスキャンする場合である。もちろん性能が最も良くない。

extra

項目 説明
using index カバーリングインデックス、インデックスデータ構造を利用してデータを抽出
using where where条件でデータを抽出。typeがALLあるいはIndxタイプと一緒に表現すると、性能が良くないことを意味
using filesort データの並べ替えが必要な場合に、メモリやディスク上でのソートの両方を含む。
using temporary クエリ処理時に内部的にtemporary tableが使われる場合を意味する
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?