[firebase-br] Select otimizado

Alysson Gonçalves de Azevedo agalysson em gmail.com
Seg Jun 2 15:29:37 -03 2014


Renan, sua ideia é otimizar, mas trocar um if, que executa um sql ou outra,
por um execute que primeiro faz um monte de funções de concatenações para
depois executar a sql... vc não otimizou nada, só complicou o que era
simples.

Eu concordo com o Rodrigo, faça uma sql assim:

select * ...
where (:tipo = 2 and ped.id_cliente = :id_cliente) or (ped.id_cliente =
:id_cliente or ped.ind = :id_cliente)



Alysson Gonçalves de Azevedo

"Anarcho-syndicalism is a way of preserving freedom." - Monty Python


Em 2 de junho de 2014 15:23, Rodrigo Gomes da Silva <rodrgomes em gmail.com>
escreveu:

> O execute statement derruba em muito a performance de um select pois não é
> precompilada, tem que fazer todo o prepare da sentença por vez q ela for
> rodar ao invez de já vir preparada pela criação da procedure... use com
> moderação ;)
>
>
> Em 2 de junho de 2014 15:06, Renan Rogowski Pozzo <renanrpozzo em gmail.com>
> escreveu:
>
> > No FB.
> >
> > Abraço,
> > Renan Rogowski Pozzo
> >
> > *"Entrega o teu caminho ao Senhor; confia nele, e ele o fará." Salmos
> 37:5*
> >
> >
> > Em 2 de junho de 2014 14:50, Paulo Sérgo Feix <paulinhofeix em gmail.com>
> > escreveu:
> >
> > > Só para entender você esta fazendo esta Procedure no Delphi ou FB ????
> > >
> > >
> > > Em 2 de junho de 2014 12:35, Renan Rogowski Pozzo <
> renanrpozzo em gmail.com
> > >
> > > escreveu:
> > >
> > > > Resolvi da seguinte forma:
> > > > coloquei a consulta do where em uma variável e carrego ela de acordo
> > com
> > > a
> > > > condição:
> > > >
> > > > Ex.:
> > > > -- SQL recebe a condição
> > > >
> > > > *  if (:tipo = 2) then*
> > > > *    sql = ' (ped.id_cliente = '|| :id_cliente ||') ' ;*
> > > > *  else*
> > > > *    sql = ' (ped.id_cliente = '|| :id_cliente ||' or
> ped.id_indicador
> > =
> > > > '||:id_cliente||') ';*
> > > >
> > > > -- no select, que coloquei dentro de um execute statement, passo a
> > > variável
> > > > no final
> > > >
> > > > *  for*
> > > > *    execute statement('*
> > > > *      select ....*
> > > >
> > > > *    where '||:sql')*
> > > >
> > > > Assim não crio repetições do select dentro da procedure.
> > > >
> > > > Abraço,
> > > > Renan Rogowski Pozzo
> > > >
> > > > *"Entrega o teu caminho ao Senhor; confia nele, e ele o fará." Salmos
> > > 37:5*
> > > >
> > > >
> > > > Em 2 de junho de 2014 11:25, Renan Rogowski Pozzo <
> > renanrpozzo em gmail.com
> > > >
> > > > escreveu:
> > > >
> > > > > Olá Rodrigo,
> > > > > justamente a ideia é otimizar a consulta.
> > > > > Queria em contrapartida reduzir código na procedure.
> > > > >
> > > > > Abraço,
> > > > > Renan Rogowski Pozzo
> > > > >
> > > > > *"Entrega o teu caminho ao Senhor; confia nele, e ele o fará."
> Salmos
> > > > 37:5*
> > > > >
> > > > >
> > > > > Em 2 de junho de 2014 11:18, Paulo Sérgo Feix <
> > paulinhofeix em gmail.com>
> > > > > escreveu:
> > > > >
> > > > > Na procedure vc pode faz, eu tenho uma desta forma
> > > > >>
> > > > >>  WHERE
> > > > >>     (
> > > > >>      (UPPER(P.IDN_STATUS) = UPPER('A'))
> > > > >>      AND
> > > > >>      (
> > > > >>       (
> > > > >>        (:ISECCION > 0)
> > > > >>        AND
> > > > >>        (P.SECCION = :ISECCION)
> > > > >>        )
> > > > >>        OR
> > > > >>        (:ISECCION IS NULL)
> > > > >>        )
> > > > >>      )
> > > > >>
> > > > >>
> > > > >> Em 2 de junho de 2014 09:09, Renan Rogowski Pozzo <
> > > > renanrpozzo em gmail.com>
> > > > >> escreveu:
> > > > >>
> > > > >> > Bom dia,
> > > > >> > gostaria de saber se é possível, ou se alguém tem alguma
> sugestão
> > > > para a
> > > > >> > situação abaixo:
> > > > >> >
> > > > >> > Em um select que tenho em uma procedure, a clausula where vai
> > mudar
> > > > >> > dependendo da condição.
> > > > >> >
> > > > >> > Ex.:
> > > > >> > if (:tipo = 2) then
> > > > >> > select
> > > > >> > ... where (ped.id_cliente = :id_cliente)
> > > > >> > else
> > > > >> > select
> > > > >> > ... where (ped.id_cliente = :id_cliente or ped.ind =
> :id_cliente)
> > > > >> >
> > > > >> > Irá mudar apenas a parte do where, o restante do select é igual.
> > > > >> > Existe uma forma de eu aproveitar o mesmo select e mudar apenas
> a
> > > > >> cláusula
> > > > >> > where dependendo da minha condição?
> > > > >> >
> > > > >> > Abraço,
> > > > >> > Renan Rogowski Pozzo
> > > > >> >
> > > > >> > *"Entrega o teu caminho ao Senhor; confia nele, e ele o fará."
> > > Salmos
> > > > >> 37:5*
> > > > >> > ______________________________________________
> > > > >> > 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
> > > > >> >
> > > > >>
> > > > >>
> > > > >>
> > > > >> --
> > > > >> Paulinho Sérgio Feix
> > > > >> ______________________________________________
> > > > >> 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
> > > > >>
> > > > >
> > > > >
> > > > ______________________________________________
> > > > 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
> > > >
> > >
> > >
> > >
> > > --
> > > Paulinho Sérgio Feix
> > > ______________________________________________
> > > 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
> > >
> > ______________________________________________
> > 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
> >
> ______________________________________________
> 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