Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Otimização da consulta

Na realidade não é uma dúvida, é uma proposta de otimização da consulta. Como o ano é fixo, não extraí o valor dele da data da venda pois todas as vendas são de 2016. Sendo assim usei o ano como constante. Também não usei o CAST, concatenei direto a expressão de calculo do total de vendas e ainda formatando para 2 casa decimais. Comparei as duas consultas houve um ganho significativo de performance entre a solução proposta e a minha abaixo:

select concat('O cliente ',nome,'faturou ',round(sum(nfi.PRECO*nfi.QUANTIDADE),2),' no ano de 2016') as linha
from tabela_de_clientes cli
inner join notas_fiscais nf on cli.cpf=nf.cpf
inner join itens_notas_fiscais nfi on nfi.numero=nf.numero
where year(nf.DATA_VENDA)=2016
group by nome
14 row(s) returned    0.375 sec / 0.000 sec

A solução proposta demorou:

14 row(s) returned    0.562 sec / 0.000 sec

Quase o dobro! Fica como sugestão :-)

2 respostas
solução!

Olá Agnaldo, tudo bem? É realmente houve um ganho no tempo de execução da consulta, e sim é uma boa, e que bom que você está indo além do que é proposto no curso, só uma coisa que você precisa analisar é que essa consulta fica mais difícil de ser reutilizada por o ano está fixo, num cenário real onde precisamos criar diversas consultas o ideal é agente tentar tornar as consultas o mais dinâmicas possível.

Continue assim e bons estudos!

Olá Jonilson, você tem razão e devemos analisar sempre a necessidade do cliente em uma visão mais ampla, conforme você comentou.

obrigado Agnaldo