Middle+
27
Медленный запрос к БД — что будешь делать?
Компании, где спрашивали
Magnit Tech
Ответ от нейросети
sobes.tech AI
Для начала нужно понять причину медленного запроса:
- Профилирование и логирование — включить логирование запросов с замером времени, использовать профайлер БД или EXPLAIN для анализа плана выполнения.
- Индексы — проверить, есть ли подходящие индексы для условий запроса, возможно добавить или оптимизировать существующие.
- Оптимизация запроса — упростить запрос, убрать лишние JOIN'ы, подзапросы, использовать более эффективные конструкции.
- Кэширование — если данные не меняются часто, можно кэшировать результат запроса.
- Пагинация и лимит — если запрос возвращает много данных, ограничить выборку.
- Параллелизм и батчи — разбить запросы на части, если возможно.
Пример в Go с использованием контекста и логированием времени:
start := time.Now()
rows, err := db.QueryContext(ctx, "SELECT * FROM users WHERE active = ?", true)
if err != nil {
return err
}
defer rows.Close()
log.Printf("Query took %s", time.Since(start))
Дальше, исходя из анализа, применить конкретные меры.