章: 第3章: パフォーマンス最適化
感覚でクエリを直して、本当に改善できていますか?
「なんとなく遅そうだからインデックスを足した」——そのインデックスは本当に効いていましたか?感覚だけでクエリを変更すると、改善なのか改悪なのか判断できず、問題が複雑化します。クエリチューニングは「計測→仮説→検証」の順で進めることで、再現性のある改善ができます。
なぜ手順が大切なのか
チューニングで最もよくある失敗は「直感で変更して、前より速い気がする」で終わらせることです。数値で計測しなければ、改善幅も改悪リスクも見えません。また、複数の変更を同時に行うと、どの変更が効いたのか特定できなくなります。
チューニングの手順:良い進め方・悪い進め方の比較
| 手順 | 良い進め方 | 悪い進め方 |
| 計測 | 実行時間をSHOW PROFILESで記録 | 体感で「遅い・速い」を判断 |
| 仮説 | EXPLAINでボトルネックを特定 | インデックスをとりあえず追加 |
| 検証 | 変更後に同じ条件で再計測・比較 | 「速くなった気がする」で完了 |
| 記録 | 改善前後のSQLと数値を残す | 変更内容を記録せず |
チェックポイント: チューニングは必ず「1変更=1計測」で進めましょう。変更前の実行時間とEXPLAIN結果を記録してから変更し、変更後に同じ条件で再計測して差分を確認します。この記録がレビューや将来の参照に使えます。
コードサンプル
-- 実行時間の確認(例)
SET profiling = 1;
SELECT * FROM posts WHERE user_id = 1 ORDER BY created_at DESC LIMIT 100;
SHOW PROFILES;
まとめ & 次のステップ
- クエリチューニングは「計測→仮説→検証」の順で進めると再現性が高まります
- 感覚ではなく実行時間とEXPLAINの数値で判断しましょう
- 1変更ずつ行い、変更前後の数値を必ず比較します
- 改善理由と却下した代替案を記録しておくとチームの資産になります
- 少量データと大量データで挙動が異なるケースがあるため、両方で確認しましょう
次回は トランザクションの基本 を学びます。複数の更新を安全にまとめ、途中失敗時にロールバックできる設計を習得しましょう。