Встречается на собеседованиях • сегодня
Какие знаешь методы оптимизации запросов в 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
интервью вопросы и ответы