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

Приходилось ли оптимизировать запросы в Django

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

  1. select_related() - для ForeignKey и OneToOne полей (JOIN в SQL):
python
# До оптимизации: N+1 запрос
books = Book.objects.all()
for book in books:
    print(book.author.name)  # Отдельный запрос для каждого автора

# После:
books = Book.objects.select_related('author').all()
  1. prefetch_related() - для ManyToMany и обратных ForeignKey отношений:
python
# Оптимизация для ManyToMany
publishers = Publisher.objects.prefetch_related('books').all()
  1. only()/defer() - загрузка только нужных полей:
python
# Загружаем только title и author_id
books = Book.objects.only('title', 'author')
  1. count() vs exists() - для проверки наличия записей:
python
# Лучше использовать exists() если нужно только проверить наличие
if Book.objects.filter(title='Python').exists():
  1. Индексы - добавление db_index=True для часто фильтруемых полей.

  2. annotate() вместо множества отдельных запросов.

Важно анализировать запросы через django-debug-toolbar и explain() для понимания узких мест.

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

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

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

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