Встречается на 1% собеседований по Python
Как решается проблема N+1 запросов в SQLAlchemy
Проблема N+1 запросов возникает, когда для каждой записи из основного запроса выполняется дополнительный запрос к связанным данным. В SQLAlchemy это решается с помощью стратегий загрузки:
- joinedload() - загружает связанные данные одним JOIN-запросом:
python
from sqlalchemy.orm import joinedload
users = session.query(User).options(joinedload(User.addresses)).all()- subqueryload() - использует подзапрос для загрузки связанных данных:
python
from sqlalchemy.orm import subqueryload
users = session.query(User).options(subqueryload(User.addresses)).all()- selectinload() (рекомендуется) - загружает связанные данные отдельным запросом с IN-условием:
python
from sqlalchemy.orm import selectinload
users = session.query(User).options(selectinload(User.addresses)).all()Для глобальной настройки можно использовать параметр lazy в relationship:
python
addresses = relationship("Address", lazy="selectin")
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы