Встречается на собеседованиях • сегодня
Что является N и SELECT в N+1 SELECT
N+1 SELECT — это проблема производительности, когда для получения связанных сущностей выполняется 1 запрос для основной коллекции и N запросов для каждой связанной сущности.
**Пример:**
```java
@Entity
public class Author {
@OneToMany(mappedBy = "author")
private List books;
}
// Проблема N+1:
List authors = entityManager.createQuery("SELECT a FROM Author a", Author.class).getResultList();
for (Author a : authors) {
a.getBooks().size(); // Для каждого автора выполняется отдельный SELECT для книг
}
```
**Решение:**
- **JOIN FETCH** в JPQL/HQL:
```sql
SELECT a FROM Author a JOIN FETCH a.books
```
- **@EntityGraph** в Spring Data JPA.
- **Batch fetching** (например, `@BatchSize`).
N — количество элементов основной коллекции, SELECT — дополнительные запросы для ленивой загрузки.

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