eduardweb.
Prisma ORMIntermediar#performance#prisma#postgresql

Cum identific query-urile lente într-o aplicație Next.js + Prisma

De Ana Ionescu, 21 apr. 2026 · 542 vizualizări · 2 like-uri

Postat acum 1 zi
typescript
// prisma-logging.ts
prisma.$use(async (params, next) => {
  const before = Date.now();
  const result = await next(params);
  const ms = Date.now() - before;
  if (ms > 100) {
    console.warn(`SLOW ${params.model}.${params.action} ${ms}ms`);
  }
  return result;
});

Cea mai frecventă cauză de TTFB mare la Next.js + Prisma: un query neindexat care merge prin 50k rânduri.

Pas 1 — Slow query log în Postgres

În postgresql.conf:

  • log_min_duration_statement = 200 (orice peste 200ms)
  • log_statement = 'all' (doar pe staging)

Pas 2 — EXPLAIN ANALYZE

Când găsești un query lent, rulezi:

EXPLAIN (ANALYZE, BUFFERS) SELECT ...

Dacă vezi Seq Scan pe o tabelă mare → lipsă index. Dacă vezi Nested Loop peste 10k rânduri → probabil trebuie rescris.

Pas 3 — Prisma middleware de timing

Pun un middleware care logheaza orice query peste 100ms. Așa văd pattern-urile clar.

Rezultat

Pe un proiect mic de e-commerce, TTFB a scăzut de la 850ms la 320ms doar prin 3 indexuri pe Order.createdAt, Product.slug, User.email.

Răspunsuri 0

Se încarcă răspunsurile…

Loghează-te pentru a răspunde

Doar membrii comunității pot lăsa comentarii.