Indexについて調査

EXPLAIN の type について

indexまたはALLを見かけたらすかさずクエリをチューニングしよう。

MySQLのIndexをはるコツ - Qiita

 

 

type ALLとなっている原因の切り分け

1. まず、WHERE句に使っている箇所を徐々に削除していく
2. そこでtypeがALLじゃ無くなったらそこが原因の一つ(それが原因のすべてでない事も多い)
3. 原因となったカラムにインデックスを貼ってみる!→早くなったらそれで良い
4. サブクエリを無くしてみる→サブクエリでもWHERE句やSELECTなら出力カラムの調整とか。JOINなくすとか。

MySQL スロークエリ改善 初心者向け - Qiita

 

 

ロック解除待ちを調べる

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を主キーにすると速くなる。