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