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!!
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 |