バックエンド面接: 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