
Você já escreveu uma query que funcionava, mas demorava pra rodar? Ou recebeu um código de outro time que parecia certo, mas era lento demais?
Saber escrever SQL que funciona é o primeiro passo. Saber escrever SQL que funciona e é eficiente é o próximo nível.
Neste artigo, você vai encarar um desafio real: otimizar uma query SQL sem alterar o resultado. Vamos entender o que está errado, o que pode ser melhorado e como pensar com performance e clareza.
O Desafio: Veja Esta Query
SELECT C.NOME, SUM(P.VALOR_TOTAL) AS TOTAL
FROM cliente C, pedido P
WHERE C.ID_CLIENTE = P.ID_CLIENTE
AND P.STATUS = 'confirmado'
AND YEAR(P.DATA_PEDIDO) = 2024
AND MONTH(P.DATA_PEDIDO) = 4
GROUP BY C.NOME
ORDER BY TOTAL DESC;O Que Essa Query Faz?
Mostra os clientes e o total gasto em pedidos confirmados feitos em abril de 2024, ordenando do maior valor para o menor.
**Está Funcional? Sim.
Está Otimizada? ❌ Ainda Não.**
Vamos aos pontos que podem ser melhorados:
🔻 1. Uso de JOIN Implícito (Estilo Antigo)
FROM cliente C, pedido P WHERE C.ID_CLIENTE = P.ID_CLIENTE📌 Problemas:
- Menos legível
- Mais propenso a erros
- Não recomendado em projetos modernos
✅ Correção:
FROM cliente C JOIN pedido P ON C.ID_CLIENTE = P.ID_CLIENTE🔻 2. Uso de YEAR() e MONTH() em campos de data
AND YEAR(P.DATA_PEDIDO) = 2024 AND MONTH(P.DATA_PEDIDO) = 4📌 Problemas:
- Essas funções quebram o uso de índice
- Tornam a filtragem mais lenta em tabelas grandes
✅ Correção: Use comparação de intervalo com BETWEEN:
AND P.DATA_PEDIDO BETWEEN '2024-04-01' AND '2024-04-30'🔻 3. Falta de Alias Descritivo no Resultado
TOTAL é vago. Nomes mais claros ajudam na leitura e no uso do resultado em relatórios.
✅ Sugestão:
SUM(P.VALOR_TOTAL) AS TOTAL_GASTOVersão Otimizada da Query
SELECT C.NOME, SUM(P.VALOR_TOTAL) AS TOTAL_GASTO
FROM cliente C
JOIN pedido P ON C.ID_CLIENTE = P.ID_CLIENTE
WHERE P.STATUS = 'confirmado'
AND P.DATA_PEDIDO BETWEEN '2024-04-01' AND '2024-04-30'
GROUP BY C.NOME
ORDER BY TOTAL_GASTO DESC;Resumo das Melhores Práticas Aplicadas
- Use
JOINexplícito - Evite funções em colunas de data para melhorar performance
- Utilize intervalos com
BETWEEN - Nomeie colunas com clareza no resultado final
Essas mudanças mantêm o resultado idêntico, mas tornam a consulta mais rápida, legível e escalável.
Conclusão
Saber otimizar queries é o que diferencia alguém que apenas “sabe SQL” de um verdadeiro analista de dados.
- Sempre revise suas consultas com olhar crítico
- Pense como o banco de dados executa cada linha
- E lembre: clareza e performance devem andar juntas
📢 E você? Já otimizou alguma query que parecia correta, mas era lenta? Compartilha sua experiência aqui! 📚 E se quiser aprender SQL com clareza, performance e aplicação real, conheça o curso SQL Simplificado — feito pra te preparar para desafios como esse.
Nos vemos no próximo artigo do Blog do SQL! 🚀
0 Comentários