Backend Matrix: post #2140 — TG.ME

🗄 SQL: Как избежать трагедии с N+1 запросами в ORM

Главный грех бэкендера при работе с ORM - случайно сгенерировать сотни запросов к БД в обычном цикле.
#  ПРОБЛЕМА (1 запрос за постами + N запросов за авторами):
posts = session.query(Post).all()
for post in posts:
print(post.author.name) # Каждая итерация делала отдельный SELECT!

# РЕШЕНИЕ (1 запрос с JOIN):
from sqlalchemy.orm import joinedload

posts = session.query(Post).options(joinedload(Post.author)).all()
for post in posts:
print(post.author.name) # Данные уже загружены заранее!
July 27, 2026 283 3