Встречается на собеседованиях • сегодня
Как избавиться от N плюс 1
Проблема N+1 возникает, когда для каждого элемента коллекции выполняется отдельный запрос. В Python (особенно с ORM типа SQLAlchemy или Django ORM) это решается:
- Жадная загрузка (Eager Loading) - загружаем связанные данные одним запросом:
python
# SQLAlchemy
users = session.query(User).options(joinedload(User.posts)).all()
Django ORM
users = User.objects.select_related('profile').prefetch_related('posts').all()
text
2. **Пакетная загрузка** - если жадная загрузка не подходит, используйте `in_bulk()` или ручную агрегацию:
```python
# Django
posts = Post.objects.filter(user_id__in=[u.id for u in users])
posts_dict = {p.user_id: p for p in posts}- Оптимизация запросов - анализируйте логи ORM (например,
django-debug-toolbar) и избегайте.all()без необходимости.
Ключевое: минимизировать количество запросов, загружая связанные данные заранее.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы