Встречается на 1% собеседований по Python
Какие возникали замедления при использовании 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
интервью вопросы и ответы