Causas comuns
- Somas e contagens feitas no código, depois de trazer todos os registros
- Uma consulta para cada linha do relatório
- Filtros por data ou status sem índice no banco
- Relatório sem paginação mostrando todos os registros de uma vez
- Exportações de planilha gigantes geradas na hora
Técnicas de otimização
| Técnica | Quando usar |
|---|---|
| Agregar no banco (SUM, COUNT, GROUP BY) | Totais e agrupamentos |
| Índices nas colunas de filtro | Filtros por data, cliente, status |
| Paginação | Listagens com muitas linhas |
| Tabelas resumo | Indicadores consultados com frequência, atualizados periodicamente |
| Cache | Relatórios que mudam pouco ao longo do dia |
| Geração em segundo plano | Exportações grandes: o sistema avisa quando o arquivo fica pronto |
Exportações grandes
Gerar uma planilha com centenas de milhares de linhas enquanto o usuário espera pode estourar o tempo limite e a memória do servidor. O caminho é enviar a geração para uma fila e entregar o arquivo por link ou e-mail quando estiver pronto. Veja timeout em tarefas demoradas.
Leia também
Se o problema está em indicadores da tela inicial, veja dashboard demora para abrir. Se os números também parecem errados, veja relatórios com valores errados. Otimizamos relatórios no nosso serviço de manutenção de sistemas PHP e Laravel.