Чем пользовался для оптимизации запросов в Django
Python
Junior
Без компании
Чем пользовался для оптимизации запросов в Django
Ответы
Для оптимизации запросов в Django чаще всего использую:
- **`select_related`** — для жадной загрузки ForeignKey и OneToOne полей (JOIN в SQL).
```
Book.objects.select_related('author').all() # Загружает автора вместе с книгой
```
- **`prefetch_related`** — для ManyToMany и обратных ForeignKey (отдельные запросы + Python-джойн).
```
Author.objects.prefetch_related('books').all() # Оптимизирует загрузку книг автора
```
- **`only()` и `defer()`** — загрузка только нужных полей.
```
Book.objects.only('title', 'author__name') # Только title и имя автора
```
- **Индексы в моделях** — `db_index=True` для часто фильтруемых полей.
- **`annotate()` и `aggregate()`** — вычисления на стороне БД.
- **Кеширование** — `django.core.cache` для тяжёлых запросов.
Для анализа: `django-debug-toolbar` — показывает запросы и время выполнения.