Voltar às perguntas frequentes sobre Bancos de dados
CENTRAL DE AJUDA · FAQBancos de dados1 min de leitura

Como reduzo consultas N+1 em uma aplicação?

O padrão N+1 acontece quando o código carrega uma lista e depois executa outra consulta para cada item, fazendo o total crescer com o tamanho do resultado. Isso pode aumentar a latência mesmo quando cada consulta é rápida; identifique o acesso repetido e carregue os dados relacionados com um número limitado de consultas.

Bancos de dados

Encontre a consulta repetida

Use logs de consultas, rastreamento ou métricas do banco para localizar solicitações que executam muitas instruções semelhantes. Compare o total de consultas com os registros retornados e identifique qual relação ou campo dispara a busca repetida.

Um conjunto pequeno de desenvolvimento pode esconder o problema. Reproduza-o com tamanhos realistas e verifique se serialização, templates ou funções auxiliares acessam relações implicitamente.

Carregue dados relacionados de forma intencional

Conforme o modelo e o banco, use uma junção, uma busca em lote com as chaves necessárias ou o carregamento antecipado do ORM. Evite tanto consultas por linha quanto um resultado enorme com dados duplicados.

Meça consultas totais, linhas retornadas, tamanho da resposta e latência antes e depois. Inclua uma verificação com listas representativas e preserve paginação e filtros de autorização ao mudar o carregamento.

Voltar às perguntas frequentes sobre Bancos de dados