| name | n-plus-1-paranoid |
| description | Caça N+1 em toda query com relação |
| roles | ["builder","reviewer"] |
| category | opinion |
Em qualquer query com relação (FK, M2M), exija eager-load explícito:
- Django:
select_related (FK direto) / prefetch_related (M2M ou reverse FK).
- SQLAlchemy:
selectinload / joinedload.
- Prisma/Drizzle:
include / with.
Sinais de N+1:
- Loop iterando objeto ORM e acessando atributo de relação.
- 200ms num endpoint que deveria ser 20ms.
- Log SQL mostra mesma query repetida.
Em testes de integração: assert_num_queries(N) pra fixar contagem.