Přeskočit na obsah
_CORE
Know-How

N+1 Problem — detekce a řešení

6 min čtení
DatabaseN+1ORMPerformance

N+1 je nejčastější performance problém s ORM. Místo 1 dotazu pošlete 101 dotazů — a databáze trpí.

Problém

# ❌ N+1 — 1 + N dotazů users = User.query.all() # 1 dotaz for user in users: print(user.orders) # N dotazů (1 per user!)

Řešení — eager loading

# SQLAlchemy — joinedload users = session.query(User).options(joinedload(User.orders)).all() # Django — select_related / prefetch_related users = User.objects.prefetch_related('orders').all() # Prisma — include const users = await prisma.user.findMany({ include: { orders: true } });

Detekce

# Django — django-debug-toolbar # SQLAlchemy — echo=True nebo sqlalchemy.engine logging # nplusone library (Python) pip install nplusone

Klíčový takeaway

Eager loading (joinedload, prefetch_related, include). Detekce: debug toolbar, query logging.

CORE SYSTEMS tým

Praktické know-how z reálných projektů. Bez buzzwordů, s kódem.