Sobes.tech
Middle+
27

Медленный запрос к БД — что будешь делать?

Компании, где спрашивали
Magnit Tech

Ответ от нейросети

sobes.tech AI

Для начала нужно понять причину медленного запроса:

  1. Профилирование и логирование — включить логирование запросов с замером времени, использовать профайлер БД или EXPLAIN для анализа плана выполнения.
  2. Индексы — проверить, есть ли подходящие индексы для условий запроса, возможно добавить или оптимизировать существующие.
  3. Оптимизация запроса — упростить запрос, убрать лишние JOIN'ы, подзапросы, использовать более эффективные конструкции.
  4. Кэширование — если данные не меняются часто, можно кэшировать результат запроса.
  5. Пагинация и лимит — если запрос возвращает много данных, ограничить выборку.
  6. Параллелизм и батчи — разбить запросы на части, если возможно.

Пример в 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))

Дальше, исходя из анализа, применить конкретные меры.