
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_GASTO
Versã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
JOIN
explí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