DevGuideTK
← Trilha Backend

ORMs e o problema N+1

O que um ORM esconde, as consultas que ele gera sem avisar e como encontrá-las antes que deixem o sistema lento.

Um ORM traduz objetos do código em linhas do banco e escreve o SQL por você. O problema N+1 acontece quando ele faz uma consulta para a lista e mais uma para cada item dela.

É a causa mais comum de lentidão em sistemas que usam ORM. O código parece inocente, os testes passam e a tela fica lenta só em produção, com dados e latência reais.

  • O ORM economiza código, mas esconde quantas consultas são feitas.
  • Acessar um relacionamento dentro de um laço pode disparar uma consulta por volta.
  • A correção é pedir os relacionamentos junto, com junção ou com uma consulta IN.
  • Registrar e contar as consultas por requisição revela o problema cedo.