> Сколько SQL-запросов выполняется при использовании join в Django ORM (Python)
Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы
Компании: ИВИ
Стек: Python
> Пример ответа
По умолчанию Django ORM при использовании select_related выполняет один SQL-запрос с JOIN. Например:
PYTHON# Модели: Book -> Author (ForeignKey)books = Book.objects.select_related('author').all()
Превращается в один запрос с LEFT OUTER JOIN (или INNER JOIN, если поле NOT NULL).
Без select_related Django выполнит N+1 запросов: один на получение книг, и по одному на каждую связанную запись автора.
Для prefetch_related (ManyToMany, обратные связи) выполняется два запроса: первый для основной модели, второй для связанной, после чего связь собирается в Python.
Таким образом, ответ зависит от метода оптимизации:
select_related- 1 запрос (JOIN).prefetch_related- 2 запроса (без JOIN).- Без оптимизации - N+1 запросов.
> Похожие задачи по Python
Работаете ли вы с Python и Go
Как выполняется чистый SQL в Django, например через execute
На каком этапе лучше проверять токен в Django
> Похожие задачи по backend
Как кодировать признак рейтинг от 1 до 5
Зачем приводить координату к float при делении?
Как выполняется чистый SQL в Django, например через execute
На каком этапе лучше проверять токен в Django
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью