Встречается на собеседованиях • сегодня

Знаешь ли в Django методы select_related и prefetch_related

Оба метода используются для оптимизации запросов к БД, но работают по-разному.

select_related создаёт SQL JOIN и загружает связанные объекты за один запрос. Подходит для ForeignKey и OneToOne полей.

python
# Загружает автора вместе с книгой за один запрос
Book.objects.select_related('author').get(id=1)

prefetch_related делает отдельный запрос для каждой связи и "соединяет" результаты на уровне Python. Оптимален для ManyToMany и обратных ForeignKey связей.

python
# Сначала книги, потом их жанры (2 запроса)
Book.objects.prefetch_related('genres').all()

Ключевые различия:

  • select_related - JOIN в SQL, prefetch_related - отдельные запросы
  • select_related для "один-к-одному", prefetch_related для "многие-ко-многим"
  • select_related экономит время на запросах, prefetch_related - на памяти
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы