Встречается на собеседованиях • сегодня

Что такое проблема N+1

Проблема N+1 возникает при работе с ORM (например, SQLAlchemy или Django ORM), когда для получения связанных данных выполняется 1 запрос для основного набора данных и N дополнительных запросов для связанных сущностей. Это приводит к значительному снижению производительности.

Пример в SQLAlchemy:

python
# Проблема N+1
users = session.query(User).all()  # 1 запрос
for user in users:
    print(user.posts)  # N запросов (по одному на каждого пользователя)

Решение — использовать жадную загрузку (eager loading):

python
# Исправленный вариант с join
users = session.query(User).options(joinedload(User.posts)).all()  # 1 запрос с JOIN
for user in users:
    print(user.posts)  # Данные уже загружены

В Django ORM аналогично можно использовать select_related (для ForeignKey) или prefetch_related (для ManyToMany).

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы