EXPLAIN の type について
indexまたはALLを見かけたらすかさずクエリをチューニングしよう。
type ALLとなっている原因の切り分け
1. まず、WHERE句に使っている箇所を徐々に削除していく
2. そこでtypeがALLじゃ無くなったらそこが原因の一つ(それが原因のすべてでない事も多い)
3. 原因となったカラムにインデックスを貼ってみる!→早くなったらそれで良い
4. サブクエリを無くしてみる→サブクエリでもWHERE句やSELECTなら出力カラムの調整とか。JOINなくすとか。
ロック解除待ちを調べる
mysql> SHOW PROCESSLIST
誰も教えてくれなかったMySQLの障害解析方法 - Qiita
explainで見るべき項目
見るべき項目は6つで、その中でもtype、key、rows、Extraの4項目に注目。
1. employeesテーブルのtype=ALL → テーブルフルスキャンという重い処理が実行されている
2. key=NULL → アクセス時にインデックスが使用されていない
3. rows=299247, filterd=100.00 → 対象データ件数は、299247件×100.00%で、約30万件
4. Extra=Using tempporary、Using filesort → 一時テーブルが使用されている、ファイルソートが使用されている。
https://style.potepan.com/articles/14926.html
order byを主キーにすると速くなる。