[имя] спросил: Сколько запросов в базу выполнилось бы, если использовать select_related, и сколько — если использовать prefetch_related?

Для одной простой ForeignKey-связи select_related обычно получает данные одним JOIN-запросом, prefetch_related — двумя запросами. Точное число зависит от связей, вложенности и последующего доступа.

Короткий ответ

Что ответить на собеседовании

Для одной простой ForeignKey-связи select_related обычно получает данные одним JOIN-запросом, prefetch_related — двумя запросами. Точное число зависит от связей, вложенности и последующего доступа.

Подробный разбор

Ответ с пояснениями

Для одной простой ForeignKey-связи select_related обычно получает данные одним JOIN-запросом, prefetch_related — двумя запросами. Точное число зависит от связей, вложенности и последующего доступа.

Первый запрос prefetch получает основные объекты, второй — связанные и объединяет их в Python. Для нескольких путей или более сложных отношений запросов может быть больше, а при пустой основной выборке некоторые не понадобятся. select_related не является универсальным решением для many-to-many. Без конкретного QuerySet нельзя честно назвать точное число для всего сценария; проверьте SQL вместе с тем, как сериализатор или шаблон обращается к данным.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее