[firebase-br] Otimização de SQL

Henrique Ribeiro kikeribeiro em gmail.com
Qui Out 3 08:24:24 -03 2013


Bom dia pessoALL,

Interessante que usando o "not exists" não retorna nada na consulta como um
todo.

Obrigado a todos e tudo de bom.

Henrique


Em 30 de setembro de 2013 08:41, Fernando Correa <fjcnando em ig.com.br>escreveu:

> ...
>
> 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
> ______________________________________________
> 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
>



Mais detalhes sobre a lista de discussão lista