Встречается на собеседованиях • сегодня
Как будешь оптимизировать запрос к БД при большом количестве данных
Для оптимизации запросов к БД с большими данными:
1. **Индексы** - создание индексов на часто используемых полях в WHERE, JOIN, ORDER BY:
```java
@Entity
@Table(indexes = @Index(name = "idx_email", columnList = "email"))
public class User { ... }
```
2. **Пагинация** - использование LIMIT/OFFSET или keyset-пагинации:
```java
Page users = userRepository.findAll(PageRequest.of(0, 50));
```
3. **Выборка только нужных полей** через проекции:
```java
interface UserNameProjection {
String getName();
}
@Query("SELECT u.name FROM User u WHERE u.active = true")
List findActiveUserNames();
```
4. **Кэширование** часто запрашиваемых данных (Spring Cache, Hibernate L2 cache)
5. **Оптимизация JOIN** - замена на подзапросы или lazy loading
6. **Анализ EXPLAIN** для понимания плана выполнения запроса
7. **Пакетная обработка** для массовых операций:
```java
@Modifying
@Query("UPDATE User u SET u.status = :status WHERE u.id IN :ids")
void bulkUpdateStatus(@Param("ids") List ids, @Param("status") String status);
```

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