他にもたとえば
コメント数の多いユーザー10⼈を抽出するクエリー
SELECT user.user_name,
COUNT(*) AScomment_count
FROM user JOIN comment ON user.user_name = comment.comment_owner
GROUP BY user.user_name
ORDER BY comment_count DESC LIMIT 10
commentテーブルの結合のためにidx̲commentowner
(comment̲owner)
userテーブルのGROUP BYのためにuser̲nameはプライマリーキーなの
でこのままでOK
ORDER BYのcomment̲countは集計関数の結果カラムなのでソートは
避けられない
5.6以降ならばソート⽤の⼀時インデックスを⾃動で作るかも。-
136/144
指標的なもの
EXPLAIN
Extra: Using filesortでORDERBYやGROUP BYがインデックスで
解決できていない
-
Extra: Using tempraryでGROUP BYやJOINがインデックスで解決で
きていない
-
Extra: Using join bufferでスキャンジョイン-
138/144
140.
指標的なもの
SHOW GLOBAL STATUS
created̲tmp̲%tables.. テンポラリーテーブルが作成された
(Extra: Using temporaryな)クエリーでカウントアップされる
-
handler̲read% .. 実際に⾏をフェッチしているとカウントアップさ
れる
-
Select̲full̲join, Select̲scan-
Sort̲merge̲passes, Sort̲scan-
139/144