MySQL がやたら重い現象を調べる修行

MySQL がやたら重くて WEB サービスが頻繁にタイムアウトしてしまうとのこと。調べていくと、どうやら特定のクエリのときに MySQL のレスポンスがやたら重いらしい。
SQL の組立て方にも問題がありそうだったが、稼働中の本番環境でもあり、できるだけコードはいじりたくない、ということで、統計情報を使わずに SQL に書いたとおりに join していくように SQL を変更したら劇的に早くなった。
具体的には、select 〜 だったところを select straight_join 〜 にしただけ。
実行計画が変わるだけなので、抽出される結果も変わらないはず (order by していないときの順序は除く)。

教訓 : ちゃんと analyze