LoginSignup
1
0

More than 1 year has passed since last update.

【MySQL】はじめてのクエリチューニング vol.2 EXPLAINの確認方法

Last updated at Posted at 2020-01-24

クエリチューニングに欠かせないEXPLAINについて
mysql.jpg

目次

1.EXPLAINとは

2.各項目の意味

3.チェックすべきところ

EXPLAINとは

インデックスがどう働いているか確認出来る
クエリチューニングを行うときまず最初に行うのがEXPLAIN

EXPLAINの使い方

クエリの頭にEXPLAINをつけて流すと「実行計画」と呼ばれるものが出力される
最後に¥Gをつけると縦に出力されて読みやすくなります

:zap:実行計画はデータ量によって全く違うものになるので、本番と近い環境で行いましょう

#各項目の意味するところ
id・・テーブル読み込みの順番

select_type・・クエリの種類

table・・該当テーブル

type・・テーブルにどのようにアクセスしているか

possible_keys・・使用可能なインデックス

key・・possible_keysの中からオプティマイザによって選ばれ有効になっているインデックス

key_len・・インデックスが有効になっている対象カラムの長さ(バイト)

ref・・keyで比較されているカラム名(定数が指定されているときはconstと表示される)

rows・・フェッチされる行数の見積もり(正確なものではない)

Extra・・インデックスの効き具合やソートの仕方etc

チェックすべきところ

type

ALLINDEXになっている場合はチューニング必須

ALLはインデックスが効いていない状態でテーブルを全スキャンしているので大変遅い

INDEXはインデックス全体をスキャンしている状態でこちらも遅い

インデックスの最適化が必要

Extra

Using temporary, Using filesortでrowsが多い場合はチューニング必須

order byを使ったクエリで、全てのテーブルが結合されたのち並び替えが行われている状態で遅い

結合前にインデックスによってソートをかけることで解消できる

とりあえず以上
:zap:別途補足します

1
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
1
0