Re: [pgbr-geral] prepare/execute

2014-09-11 Por tôpico Matheus de Oliveira
2014-09-11 14:13 GMT-03:00 Paulo Bastos :

> 1. Alguem poderia me auxiliar, informando se há um impacto sinificativo
> nesta utilização. Ou seja
> vale a pena utilizar os comandos.
>
>

Caso vá repetir o mesmo comando várias vezes, há sim uma grande vantagem.

Se estiver usando versão anterior à 9.2, vale a pena migrar (já para 9.3)
pois há grandes melhorias nessa área.



> 2. Como faço para colocar o resultado da execução em uma variavel?
> Gostaria de ter o resultado
> da select em um variável.
>
> Estou usando as intruções abaixo:
>
> PREPARE   query_handle (integer) as  select id from socic.pessoa where
> id_telefone_atual = $1;
> Executequery_handle(telefone_id);
>
> Quando executo no pgadmin funciona normalmente. Quando executo a função
> que tem as instruções
> da o seguinte erro;
> ERRO:  função query_handle(integer) não existe
>LINE 1: SELECT query_handle(telefone_id)
>^
>   HINT:  Nenhuma função corresponde com o nome e os tipos
> de argumentos informados. Você precisa adicionar conversões de tipo
> explícitas.
> QUERY:  SELECT query_handle(telefone_id)
> CONTEXT:  PL/pgSQL function migracao.limpa_telefone_duplicado2() line 36
> at comando EXECUTE
> NOTA:  Query 
>

Em funções PL/pgSQL você não precisa fazer nada disso. As funções PL/pgSQL
já fazem cache dos planos de execução, ou seja, é como se sempre fosse
feito um PREPARE na primeira execução e EXECUTE nesta e nas demais.

Resumindo, usando uma função PL/pgSQL você não precisa de prepared
statements... 8-)

Entretanto, uma pergunta: tem certeza que precisa executar isso 1 milhão de
vezes? Já vi muita gente "socando" consultas em loops sendo que daria pra
fazer num único comando. Se quiser ajuda com essa validação/verificação,
abra um novo assunto e nos apresente o problema.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] prepare/execute

2014-09-11 Por tôpico Paulo Bastos
Caros colegas,
 
estou tentando usar o prepare/execute para aumentar a velocidade de uma função que 
lê mais de  1.000.000 de registros.
 
1. Alguem poderia me auxiliar, informando se há um impacto sinificativo nesta utilização. Ou seja 
vale a pena utilizar os comandos.
 
2. Como faço para colocar o resultado da execução em uma variavel? Gostaria de ter o resultado
da select em um variável.
 
Estou usando as intruções abaixo:
 
PREPARE   query_handle (integer) as  select id from socic.pessoa where id_telefone_atual = $1;        
Execute    query_handle(telefone_id);
 
Quando executo no pgadmin funciona normalmente. Quando executo a função que tem as instruções
da o seguinte erro;

                   ERRO:  função query_handle(integer) não existe
                   LINE 1: SELECT query_handle(telefone_id)
               ^
                  HINT:  Nenhuma função corresponde com o nome e os tipos de argumentos informados. Você precisa adicionar conversões de tipo explícitas.
QUERY:  SELECT query_handle(telefone_id)
CONTEXT:  PL/pgSQL function migracao.limpa_telefone_duplicado2() line 36 at comando EXECUTE
NOTA:  Query  
 
 
Antecipadamente agradeço qualquer ajuda.
 
Paulo Roberto
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral