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.