Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Django: select_related, prefetch_related, orm, optimization, join, query

В чём разница между select_related и prefetch_related?

Вопрос проверяет знания оптимизаций запросов в Django ORM для уменьшения количества запросов к базе.

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

select_related использует SQL JOIN для выборки связанных объектов одного уровня (ForeignKey, OneToOne), а prefetch_related делает отдельный запрос и объединяет объекты в Python, подходит для отношений ManyToMany и обратных ForeignKey.

Длинный ответ

select_related:

  • Эффективен для «один к одному» и «многие к одному».

  • Добавляет JOIN к основному запросу.

  • Загружает связанные объекты одним запросом.

prefetch_related:

  • Используется для «многие ко многим» и обратных связей.

  • Выполняет отдельный запрос для связанных объектов.

  • После запроса связывает данные в Python.

# Пример
orders = Order.objects.select_related('customer')
items = Order.objects.prefetch_related('items')

Вывод:
Выбор зависит от типа связи и объема данных для оптимизации производительности.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Django

    Django

Ключевые слова

#select_related

#prefetch_related

#orm

#optimization

#join

#query

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.