Встречается на собеседованиях • сегодня
Как минимизировать количество запросов в связанной таблице
Используйте select_related и prefetch_related в Django ORM для оптимизации запросов к связанным таблицам:
python
# select_related - для ForeignKey и OneToOne (JOIN в SQL)
queryset = Book.objects.select_related('author').all() # 1 запрос вместо N+1
prefetch_related - для ManyToMany и обратных ForeignKey (отдельный запрос)
queryset = Author.objects.prefetch_related('books').all() # 2 запроса вместо N+1
text
Другие методы:
1. Используйте `annotate` для агрегации данных
2. Кэшируйте часто используемые данные
3. Применяйте `only()`/`defer()` для выбора конкретных полей
4. Для сложных случаев используйте `Prefetch` с кастомными QuerySet
Пример с Prefetch:
```python
from django.db.models import Prefetch
queryset = Author.objects.prefetch_related(
Prefetch('books', queryset=Book.objects.filter(published=True))
)
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы