Встречается на 1% собеседований по Python
Какие знаешь методы оптимизации запросов в Django ORM
В Django ORM есть несколько методов оптимизации запросов:
-
select_related— для ForeignKey и OneToOne, делает JOIN в SQL:pythonbooks = Book.objects.select_related('author').all() # 1 запрос вместо N+1 -
prefetch_related— для ManyToMany и обратных ForeignKey, загружает связанные объекты отдельным запросом:pythonauthors = Author.objects.prefetch_related('books').all()
-
only()иdefer()— загружают только нужные поля:pythonbooks = Book.objects.only('title', 'author__name') -
annotate()иaggregate()— вычисления на стороне БД:pythonfrom django.db.models import Count authors = Author.objects.annotate(book_count=Count('books')) -
Использование
exists()иcount()— для проверки наличия/количества без загрузки объектов:pythonif Book.objects.filter(author=author).exists(): ... -
Индексы в моделях — ускорение поиска:
pythonclass Book(models.Model): title = models.CharField(db_index=True) -
bulk_createиbulk_update— массовые операции.
Избегайте N+1 проблем, проверяйте запросы через connection.queries или Django Debug Toolbar.

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