Встречается на собеседованиях • сегодня
Какие возникали замедления при использовании Django ORM
Основные причины замедлений в Django ORM:
- N+1 проблема - когда для каждого объекта делается отдельный запрос к связанной таблице. Решается
select_related()(ForeignKey) иprefetch_related()(ManyToMany).
python
# Плохо - N+1 запросов
books = Book.objects.all()
for book in books:
print(book.author.name) # Отдельный запрос для каждого автора
Хорошо - 1 запрос
books = Book.objects.select_related('author').all()
text
2. **Неоптимальные запросы** - ORM иногда генерирует сложные SQL. Решение - использовать `only()`, `defer()` для выбора конкретных полей.
3. **Большие выборки** - загрузка всех записей разом (`all()`). Лучше использовать `iterator()` или пагинацию.
4. **Отсутствие индексов** - медленные запросы из-за отсутствия индексов на часто фильтруемых полях.
5. **Аннотации и агрегации** - сложные вычисления на стороне Python вместо SQL. Решение - делать агрегацию в БД через `annotate()`/`aggregate()`.
6. **Медленные транзакции** - долгие операции в транзакциях блокируют таблицы. Решение - разбивать на мелкие транзакции.
Профилирование через `connection.queries` или Django Debug Toolbar помогает находить узкие места.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы