第15回: クエリチューニングの手順 — 計測なき最適化は迷走する

章: 第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変更ずつ行い、変更前後の数値を必ず比較します
  • 改善理由と却下した代替案を記録しておくとチームの資産になります
  • 少量データと大量データで挙動が異なるケースがあるため、両方で確認しましょう

次回は トランザクションの基本 を学びます。複数の更新を安全にまとめ、途中失敗時にロールバックできる設計を習得しましょう。

Related Articles