[firebase-br] Otimização de SQL

Fernando Correa fjcnando em ig.com.br
Seg Set 30 08:41:19 -03 2013


...

Veja também dessa forma:



... where pessoa.pes_codigo not exists (select first 1 nota.pes_cod_cli
from nota  where
nota.nf_dtsaida Between '10/01/2011' AND '11/30/2011' order by
nota.pes_cod_cli)
 and nota.nf_numero = (Select first 1 x.nf_numero from nota x where
x.pes_cod_cli = nota.pes_cod_cli AND x.nf_dtsaida not Between '10/01/2011'
AND '11/30/2011' order by x.nf_numero desc)
ORDER BY PESSOA.PES_NOME, nota.nf_dtsaida

Faz com que a pesquisa venha em ordem por código do cliente e encontrando
um cliente que atenda a pesquisa já será suficiente e encontrando uma nota
que atenda ao outra pesquisa seguinte, também já sai da pesquisa.

Atenciosamente
Fernando Correa




Em 27 de setembro de 2013 12:42, Henrique Ribeiro
<kikeribeiro em gmail.com>escreveu:

> Boa tarde colegas,
>
> Apresento um script que rodo em meu banco Firebird 2.1.1.17910(Win32) e
> leva mais de 30 segundos para retornar os valores.
>
> Se alguém tiver uma sugestão no sentido de otimizá-lo, agradeço
> antecipadamente.
>
> select distinct  pessoa.pes_codigo "Cod Cliente", pessoa.pes_nome "Nome do
> cliente", pesrep.pes_cod_repres "Cód. Rep.", pessoa.pes_endere,
> bairro.bar_nome "Bairro", cidade.cid_nome "Cidade", pessoa.pes_fone,
> pessoa.pes_fone2,  pessoa.pes_fone3, pessoa.pes_contat,
> pessoa.pes_consignado, pessoa.pes_condata, pessoa.pes_condescricao,
> pessoa.pes_conexpositor, nota.nf_numero, nota.ped_numero, nota.nf_valtotal,
> nota.nf_valsubs, nota.nf_dtsaida  from nota  inner join pessoa on
> (nota.pes_cod_cli = pessoa.pes_codigo)  inner join pesrep on
> (pessoa.pes_codigo = pesrep.pes_cod_cliente)  left outer join bairro on
> (pessoa.bar_codigo = bairro.bar_codigo)  left outer join cidade on
> (bairro.cid_codigo = cidade.cid_codigo)
> where pessoa.pes_codigo not in (select nota.pes_cod_cli from nota  where
> nota.nf_dtsaida Between '10/01/2011' AND '11/30/2011'
> )
>  and nota.nf_numero = (Select max(x.nf_numero) from nota x where
> x.pes_cod_cli = nota.pes_cod_cli AND x.nf_dtsaida not Between '10/01/2011'
> AND '11/30/2011')
> ORDER BY PESSOA.PES_NOME, nota.nf_dtsaida
>
>
> Obrigado e um excelente final de semana para todos.
> Henrique
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



-- 
Atenciosamente
Fernando Correa



Mais detalhes sobre a lista de discussão lista