В чём разница между select_related и prefetch_related?
Сколько запросов к БД выполнится с PrefetchRelated в Django?
Как prefetch_related и select_related помогают избежать проблемы N+1?
Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Рейтинг:
2
Сложность:
6
select_related использует SQL JOIN для выборки связанных объектов одного уровня (ForeignKey, OneToOne), а prefetch_related делает отдельный запрос и объединяет объекты в Python, подходит для отношений ManyToMany и обратных ForeignKey.
Рейтинг:
2
Сложность:
5
С prefetch_related Django делает ровно 2 запроса:
Получить основные объекты (например, все магазины).
Получить все связанные объекты (например, все книги этих магазинов).
Дальше ORM связывает их в памяти. Без prefetch_related было бы N+1 запросов.
Рейтинг:
1
Сложность:
6
select_related загружает связанные данные одним JOIN-запросом, а prefetch_related делает отдельный запрос и кэширует результаты. Оба метода предотвращают множественные запросы при обращении к связанным объектам.