Встречается на собеседованиях • сегодня
Приходилось ли оптимизировать запросы в Django
Да, приходилось. Основные методы оптимизации запросов в Django:
- 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()- prefetch_related() - для ManyToMany и обратных ForeignKey отношений:
python
# Оптимизация для ManyToMany
publishers = Publisher.objects.prefetch_related('books').all()- only()/defer() - загрузка только нужных полей:
python
# Загружаем только title и author_id
books = Book.objects.only('title', 'author')- count() vs exists() - для проверки наличия записей:
python
# Лучше использовать exists() если нужно только проверить наличие
if Book.objects.filter(title='Python').exists():-
Индексы - добавление db_index=True для часто фильтруемых полей.
-
annotate() вместо множества отдельных запросов.
Важно анализировать запросы через django-debug-toolbar и explain() для понимания узких мест.

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