Встречается на собеседованиях • сегодня
Как оптимизироватать сложные SQL запросы
Для оптимизации сложных SQL-запросов в Java-приложениях я использовал несколько подходов:
1. **Анализ плана выполнения** - EXPLAIN ANALYZE для выявления узких мест (индексы, full scan)
2. **Оптимизация индексов** - добавлял составные индексы для часто фильтруемых полей
3. **Денормализация** - в некоторых случаях жертвовал нормализацией для JOIN-heavy запросов
4. **Пагинация** - LIMIT/OFFSET или keyset pagination для больших результатов
5. **Кэширование** - Spring Cache или Redis для часто запрашиваемых данных
Пример оптимизации через индексы:
```sql
-- До
SELECT * FROM orders WHERE customer_id = 123 AND status = 'SHIPPED';
-- После добавления индекса
CREATE INDEX idx_orders_customer_status ON orders(customer_id, status);
```
Также использовал JPA/Hibernate hints для управления поведением ORM:
```java
@QueryHints({
@QueryHint(name = "org.hibernate.fetchSize", value = "100"),
@QueryHint(name = "org.hibernate.timeout", value = "10")
})
List findOrdersByCustomer(Long customerId);
```

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