Что такое Проблема N+1?

Ответ

При итерации по списку на каждую связанную сущность делается отдельный SELECT. Решения: JOIN FETCH, @EntityGraph, @BatchSize, @Fetch(FetchMode.SUBSELECT).

Разбор: Суть N+1 в чтении: один запрос достаёт N корневых сущностей, а затем для каждой выполняется отдельный SELECT за связанной коллекцией или сущностью — итого N+1 запросов. Ловушка дистракторов в подмене темы: декартово произведение от JOIN, исчерпание пула и двойная запись — это другие проблемы, а правильные средства борьбы именно с N+1 — JOIN FETCH, @EntityGraph, @BatchSize и SUBSELECT.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться