Встречается на 1% собеседований по Python
Как решается проблема N+1 запросов
Проблема N+1 запросов возникает, когда для получения связанных данных выполняется один основной запрос и N дополнительных запросов для каждой записи. В Python (особенно с ORM типа SQLAlchemy или Django ORM) это решается несколькими способами:
- Eager Loading - загрузка связанных данных одним запросом:
python
# SQLAlchemy
from sqlalchemy.orm import joinedload
users = session.query(User).options(joinedload(User.posts)).all()
Django ORM
users = User.objects.select_related('profile').prefetch_related('posts').all()
text
2. **Batch Loading** - группировка запросов (например, в SQLAlchemy через `subqueryload`):
```python
from sqlalchemy.orm import subqueryload
users = session.query(User).options(subqueryload(User.posts)).all()- Оптимизация вручную - иногда эффективнее сделать 2 запроса и соединить данные в коде.
Ключевое - загружать связанные данные сразу, а не лениво. В Django это select_related (для ForeignKey) и prefetch_related (для ManyToMany), в SQLAlchemy - joinedload, subqueryload.

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