optimizacion de un fetch

From: Miguel Angel Hernandez Moreno <miguel(dot)hdz(dot)mrn(at)gmail(dot)com>
To: Lista PostgreSql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: optimizacion de un fetch
Date: 2010-07-11 16:12:03
Message-ID: AANLkTinypBnTNVe22K_AnplFGMt7Hl_lGk3UiHY47-3_@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

hola lista!!

compañeros el dia de hoy encontre un detalle muy particular, estoy viendo
que una de mis funciones tiene un retraso
al momento de hace un fetch, para comprobar la velocidad puse RAISE con
click_timestamp() y comparar las distancias
de tiempo que existen entre cada paso que valla dando la funcion y encontre
que al momento de hacer un select es
demasiado rapido, ni medio segundo pero al momento de hacer el fetch
insertandolo en una tabla temporal se tarda *6 segundos*

El select por si solo no tarda ni medio segundo y el puro select me regresa
1 registro, pero al hacer el fetch se tarda 6 segundos
para guardar ese registro!!! Alguien sabe por que pasa eso??? Paso una
fraccion del codigo para que veamos el ejemplo

raise notice 'Entra select 2 % ',
clock_timestamp();-------------------------------------------------------------------------------------------------------
Tiempo =2010-07-11 10:43:06.537708-05

open tablas for select distinct on (i_idruta)
i_idruta,n_xytermina,l_mediaruta,i_idrutallega,pasaterminal,max_tiempovta
from monterrey.boleturavl,monterrey.terminales
where hreal>=$2 and hreal<=$3 and (hreal- recibo)< interval'2 hours' and
boleturavl.linea=$5 and boleturavl.economico=$1
and terminales.i_idlinea=$5
and (boleturavl.xy @circle(terminales.n_xytermina,terminales.n_tperim))
order by i_idruta;
raise notice 'Sale de select 2 % ',
clock_timestamp();---------------------------------------------------------------------------------------------------
Tiempo=2010-07-11 10:43:06.539804-05
loop
fetch tablas into regis11;
if found then
lidruta:=regis11.i_idruta;
lxy:=regis11.n_xytermina;
pasadasterminalaux:=regis11.pasaterminal;
contador:=1;
raise notice 'loop2 el idruta % fecha
%',lidruta,clock_timestamp();---------------------------------------------------------------------------
Tiempo=2010-07-11 10:43:12.026965-05

Si alguien sabe que debo obtimizar o que debo cambiar me ayudaria mucho
GRACIAS!!

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Miguel Angel Hernandez Moreno 2010-07-12 02:35:29 diferencias entre refcursor y cursor
Previous Message Miguel Angel Hernandez Moreno 2010-07-11 15:19:22 Re: consumo de cpu en insrt