コンテンツにスキップ

バックエンド面接: DB クエリ最適化

元ネタ

  • X: https://x.com/SakshiSugandhi/status/2040998891890548765
  • 投稿者: @SakshiSugandhi

原文

Interviewer:

Your database query is taking 5 seconds how will you optimize so it will only take 500 milliseconds?

要約

5 秒かかっている DB クエリを 500ms 以内に最適化する方法を聞く面接質問。インデックス設計、クエリ分析、キャッシュ戦略など幅広い知識が問われる。

まずの答え

まず EXPLAIN でクエリの実行計画を確認する。フルテーブルスキャンが走っていないか、適切なインデックスがあるか、不要な JOIN がないかを調べる。そのうえで、インデックス追加、クエリ書き換え、キャッシュ導入(Redis 等)、必要なら非正規化やリードレプリカの導入を検討する。

深掘りしたい観点

  • EXPLAIN / EXPLAIN ANALYZE の読み方
  • 複合インデックスの設計戦略
  • N+1 問題の検出と解決
  • キャッシュ戦略(query cache, application cache, materialized view)
  • パーティショニングとシャーディング

tags: #backend #interview #database #query-optimization #performance #index