В заданных условиях — 21 запрос: один за заказами и по одному за каждым клиентом. Это характерная проблема N+1.
Сколько запросов создаёт ленивое получение связей
В заданных условиях — 21 запрос: один за заказами и по одному за каждым клиентом. Это характерная проблема N+1.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
ORM сначала загружает 20 заказов одним запросом, затем в цикле для каждого впервые читает ленивую связь customer. Кеш не используется и клиенты разные. Сколько запросов получится?
Ответ
В заданных условиях — 21 запрос: один за заказами и по одному за каждым клиентом. Это характерная проблема N+1.
Количество возвращённых строк зависит от выбранных полей и кардинальности связей, а не только числа запросов. Используйте eager loading, join или отдельную пакетную загрузку клиентов. Проверьте SQL-лог и условия конкретной ORM: identity map, уже загруженные связи и кеш способны изменить фактическое число обращений.