[mariadb] Explainでクエリ測定

するけど各項目は何、っていうメモ・・・しようと思ったけど参考サイトがほぼ全部書いてあるのでそちら見てねっていうだけの記事
参考:MySQL EXPLAINのそれぞれの項目についての覚書
https://qiita.com/kzbandai/items/ea02727f4bb539fcedb5


ちなみにJOIN があるだけ行が増える
・id
・select_type : SIMPLE
・table : 使われているテーブル名
・type: ALL, eq_ref
ALL が一番ダメ、なぜならインデックス未使用だから
eq_refはconstと同義でjoinの場合にそうなる、主キー使っているので問題ないよというもの
・possible_keys: NULL, PRIMARY
使用可能と判断されたインデックス、nullは未使用、primaryは主キー
一つしかなかったけど、複数インデックス張ってると複数出るのかしら
・key:NULL, PRIMARY
使用されたインデックス
・key_len: NULL, 4
使用されたキーの長さ
キーの長さとは?項目長ではなさそう
・ref: NULL, .

.

参考サイトの通り
・rows: n
検索される見込み行、これが少ないほど良い
見込みなので実行時に変わる可能性がある
・Extra : Using where, Using filesort
参考サイトの参考サイト参照
Using where はwhere句使用、Using filesortは検索対象がソートされているということ
Using filesortが現れた場合は注意が必要

これを見た上でどうするのか

それが希少なクエリならば例外として認めても良いが、頻繁に利用するならば改善を行うべき
例えば rowsが過大なクエリが頻繁に実行されるならば、より最適なクエリを検討する
・・・具体例はまだ何も対処してないからまだ書けない


とりあえず explainの結果を格納するテーブルを用意してロギングしてみよう

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Copy link