Встречается на собеседованиях • сегодня

Сталкивался ли с оптимизацией в Django ORM

Да, сталкивался. Основные подходы к оптимизации Django ORM:

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

Важно анализировать конкретные запросы через django-debug-toolbar или EXPLAIN.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы