[firebase-br] Procedure demorada - Where + Order by

Cleber cleber em agrosoftrs.com.br
Ter Dez 16 11:34:19 -03 2008


procedure dinâmica, tem apartir da 1.5.

param_in é um varchar que vc manda da aplicação para os parametros de 
entrada.
execute statement  'select * from tabela where tabela.oi_codforn in 
'||param_in||'order by oi_codprod'


----- Original Message ----- 
From: "Felipe Aron" <felipearon em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Tuesday, December 16, 2008 10:52 AM
Subject: Re: [firebase-br] Procedure demorada - Where + Order by


Só não entendi o "execute statement". Poderia me dar o exemplo ?

2008/12/16 Cleber <cleber em agrosoftrs.com.br>

> veja se você tem o campo oi_codforn no indice, senão crie um indice com os
> campos ou tente tirar o where e passe esse parametro do in em um varchar, 
> e
> na procedure use um execute statement
>
> ----- Original Message ----- From: "Felipe Aron" <felipearon em gmail.com>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Tuesday, December 16, 2008 10:26 AM
> Subject: Re: [firebase-br] Procedure demorada - Where + Order by
>
>
>
> Vamos lá:
> 1) Estou usando Fb 1.5, portanto não há tabelas temporárias...
> Se não usar o where a procedure executa em 62ms ... com Where vai para
> 960ms
> e com order by vai para 3s .... isso localmente...
> agora pela rede ai a coisa fica demorada mesmo...
>
> O que significa: "Passar uma string e montar as queries da procedure com
> execute statement" ??
>
> 2008/12/16 Adriano dos Santos Fernandes <adrianosf em uol.com.br>
>
>  Felipe Aron escreveu:
>>
>>  Pessoal estou com uma problemão:
>>>
>>> Tenho uma procedure que serve como base para um relatório.
>>> Porém além dos parametros que eu passo para ela eu ainda tenho de usar
>>> uma
>>> consição Where e Order By na select da procedure:
>>>
>>> select rel_controleestoque.*
>>> from rel_controleestoque('11/24/2008', '11/27/2008', 30, 0)
>>> where rel_controleestoque.oi_codforn in (5238)
>>> order by rel_controleestoque.oi_codprod
>>>
>>> Sem a condição where vai super rápido....
>>>
>>>
>> Estranho, isso não deveria acontecer. Mas quanto tempo seria "super
>> rápido"
>> e não-"super rápido"?
>>
>> Qual a versão do FB? Quais os planos de execução com e sem o WHERE?
>>
>>  há alguma opção para enviar como
>>
>>> parametro um array na procedure ??
>>>
>>>  Você tem duas opções:
>>>
>>
>> 1) Passar uma string e montar as queries da procedure com execute
>> statement
>> 2) Cria uma tabela temporária com colunas (id [use generator], valor),
>> insira os valores na tabela com um ID só. Passe o ID para a procedure. Na
>> procedure, faça um join com a tabela temporária.
>>
>>
>> Adriano
>>
>> ______________________________________________
>> 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
>>
>>
>
>
> --
> Com a força aprenda a suavidade. Através da suavidade a força prevalecerá!
>
> http://www.felipearon.net
> http://br.groups.yahoo.com/group/xna-br/
> ______________________________________________
> 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
>



-- 
Com a força aprenda a suavidade. Através da suavidade a força prevalecerá!

http://www.felipearon.net
http://br.groups.yahoo.com/group/xna-br/
______________________________________________
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