Встречается на собеседованиях • сегодня
Сталкивался ли с оптимизацией в Django ORM
Да, сталкивался. Основные подходы к оптимизации Django ORM:
- select_related() - для ForeignKey и OneToOneField (JOIN в SQL):
python
books = Book.objects.select_related('author').all() # 1 запрос вместо N+1- prefetch_related() - для ManyToManyField и обратных связей:
python
authors = Author.objects.prefetch_related('books').all()- only()/defer() - загрузка только нужных полей:
python
users = User.objects.only('username', 'email')- count() vs exists():
python
if Book.objects.filter(author=author).exists(): # Лучше чем count() > 0- bulk_create/update для массовых операций:
python
Book.objects.bulk_create([Book(...), Book(...)])- Индексы в моделях:
python
class Meta:
indexes = [models.Index(fields=['title'])]- connection.queries для дебага:
python
from django.db import connection
print(connection.queries)Важно анализировать конкретные запросы через django-debug-toolbar или EXPLAIN.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы