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

Какие знаешь методы оптимизации ORM

  1. Выборка только нужных полей – используй only() или defer() для загрузки только необходимых полей, уменьшая объем данных.
python
User.objects.only('username', 'email')  # Загружает только username и email
  1. select_related() – для ForeignKey и OneToOneField, уменьшает количество SQL-запросов через JOIN.
python
Entry.objects.select_related('author')  # JOIN с таблицей авторов
  1. prefetch_related() – для ManyToManyField и обратных связей, загружает связанные объекты одним запросом.
python
Article.objects.prefetch_related('tags')  # Оптимизация для M2M
  1. Использование индексов – добавь db_index=True для часто фильтруемых полей.

  2. Пакетные операцииbulk_create(), bulk_update() для массовых вставок/обновлений.

python
User.objects.bulk_create([User(...), User(...)])
  1. Оптимизация агрегацийannotate() и aggregate() вместо Python-логики.

  2. Ленивые запросы – избегай преждевременного выполнения через list() или len() без необходимости.

  3. Кеширование – Django ORM + cache_page или низкоуровневое кеширование QuerySet.

  4. Raw SQL для сложных запросов – если ORM неэффективен, используй raw().

  5. Оптимизация миграций – избегай лишних ALTER TABLE, объединяй миграции.

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

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

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

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