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! 🚀

Tags: | | |

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Solicitar exportação de dados

Use este formulário para solicitar uma cópia de seus dados neste site.

Solicitar a remoção de dados

Use este formulário para solicitar a remoção de seus dados neste site.

Solicitar retificação de dados

Use este formulário para solicitar a retificação de seus dados neste site. Aqui você pode corrigir ou atualizar seus dados, por exemplo.

Solicitar cancelamento de inscrição

Use este formulário para solicitar a cancelamento da inscrição do seu e-mail em nossas listas de e-mail.