Встречается на собеседованиях • сегодня
Как оптимизируешь медленный запрос к БД
Для оптимизации медленного SQL-запроса:
1. **Анализ плана выполнения** (EXPLAIN) - выявляем узкие места (full scan, отсутствие индексов)
2. **Добавление индексов** на часто используемые поля в WHERE/JOIN/ORDER BY:
```sql
CREATE INDEX idx_user_email ON users(email);
```
3. **Оптимизация самого запроса**:
- Избегать SELECT * (выбирать только нужные поля)
- Заменить подзапросы на JOIN
- Использовать LIMIT для пагинации
4. **Кэширование** результатов (Redis, Ehcache)
5. **Batch-обработка** для массовых операций
6. **Настройка БД** - увеличение буферов, параметров соединений
Пример оптимизации через индексы:
```java
// Было
@Query("SELECT u FROM User u WHERE u.lastName LIKE %:name%")
List findUsersBySubstring(@Param("name") String name);
// Стало (с индексом на lastName)
@Query("SELECT u FROM User u WHERE u.lastName LIKE :name%")
List findUsersStartingWith(@Param("name") String name);
```

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы