В Django select_related получает одиночные связи через SQL JOIN, а prefetch_related загружает связанные объекты отдельными запросами и связывает их в Python. Оба помогают устранить N+1.
Ты работал в основном с FastAPI или с Django? Можешь рассказать про select_related и prefetch_related — что из этого что и зачем?
В Django select_related получает одиночные связи через SQL JOIN, а prefetch_related загружает связанные объекты отдельными запросами и связывает их в Python. Оба помогают устранить N+1.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В Django select_related получает одиночные связи через SQL JOIN, а prefetch_related загружает связанные объекты отдельными запросами и связывает их в Python. Оба помогают устранить N+1.
select_related подходит для ForeignKey и OneToOne; prefetch_related — в том числе для обратных и many-to-many связей. Выбор зависит от кардинальности, объёма и дальнейших обращений: prefetch может загрузить слишком много объектов в память, а новый фильтр связанной коллекции не обязан использовать кеш. Про основной опыт с FastAPI или Django отвечайте отдельно и честно. Сам FastAPI не определяет ORM и стратегию загрузки связей.