❓ Что такое проблема N+1 и как её решить?
N+1 возникает при ленивой загрузке связанных сущностей в ORM. Чтобы получить список из N объектов, выполняется 1 запрос на сам список плюс по 1 запросу на подгрузку связи у каждого объекта — итого N+1 запросов.
Например, 100 заказов с ленивым клиентом → 1 запрос на заказы + 100 запросов на клиентов = 101 запрос вместо одного-двух. На больших объёмах это убивает производительность.
Решения:
— JOIN FETCH или @EntityGraph, чтобы подтянуть связь одним запросом;
— batch fetching, для загрузки связей пачками;
— DTO-проекция одним запросом, без загрузки целых сущностей.
🐸 Библиотека собеса по Java
#sql
Post #1410
1.02K
- 👍 5
- ❤ 1
- 🔥 1
- 👏 1