Встречается на собеседованиях • сегодня
Как решается проблема 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
интервью вопросы и ответы