Re: Funcion SQL mas lenta que un SQL

From: "Raul Lapitzondo" <raul(dot)lapitzondo(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Cc: "Omar Zeballos" <ozeballos(at)kantutani(dot)com>
Subject: Re: Funcion SQL mas lenta que un SQL
Date: 2008-03-11 14:26:10
Message-ID: bfe4f2370803110726k665fe2f7pa29671b1c0e2dee3@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

No habia visto que usar el Where estaba implicito en el comentario, me
quedé con el "select... union all...".

Respecto a probar la funcion, no se que decirte pues nunca me toco
estimar algo como lo que intentas probar, normalmente las consultas de
union las utilizo para evacuar algun reporte a pedido, o si es algo
periodico termina en una vista, pero nunca utilice una función para
esa "función", valga la redundancia.

El 11/03/08, Omar Zeballos <ozeballos(at)kantutani(dot)com> escribió:
> Raul, para que este un poco mas claro, la sentencia
>
> select a,b,c from tabla1 where fecha<=current_date and codproducto=100
> union all
> select a,b,c from tabla2 where fecha<=current_date and codproducto=100
> union all
> select a,b,c from tabla3 where fecha<=current_date and codproducto=100
>
> TARDA 4seg, Pero cuando creo la funcion,
>
>
> CREATE OR REPLACE FUNCTION sql_regenerastock(p_fecha date, p_codprod
> numeric)
> RETURNS SETOF regenerastock AS $BODY$
>
> select a,b,c from tabla1 where fecha<=p_fecha and codproducto=p_codprod
> union all
> select a,b,c from tabla2 where fecha<=p_fecha and codproducto=p_codprod
> union all
> select a,b,c from tabla3 where fecha<=p_fecha and codproducto=p_codprod
> LANGUAGE 'sql' VOLATILE;
>
> y ejecuto select * from sql_regenerastock(current_date,100) esta tarda
> 70seg
> No es un problema de indices, es un problema de colocar una consulta en una
> funcion SQL y utlizarla, porque si observas bien es la misma consulta,
> Saludos,
> Omar.
> _________________________________________________________________
>
> ----- Original Message -----
> From: "Raul Lapitzondo" <raul(dot)lapitzondo(at)gmail(dot)com>
> To: <pgsql-es-ayuda(at)postgresql(dot)org>
> Cc: "Omar Zeballos" <ozeballos(at)kantutani(dot)com>
> Sent: Tuesday, March 11, 2008 7:00 AM
> Subject: Re: [pgsql-es-ayuda] Funcion SQL mas lenta que un SQL
>
>
> En principio no estas comparando lo mismo, tu primer consulta la que
> no tiene funci'on no utiliza "where". Cuanto tarda la función si no
> recibiera parámetros ejecutando esa unión ?.
>
> Después con respecto al Where, habria que ver si los campos que se
> condicionan, tienen indices, etc...
>
> Saludos
>
> El 10/03/08, Omar Zeballos <ozeballos(at)kantutani(dot)com> escribió:
> >
> >
> > Lista,
> > se me presento el problema desde la version 8.1.4, ahora estoy haciendo
> > pruebas con la 8.2.6, y el problema persiste. Lo que suscede es que al
> > realizar consultas del tipo
> >
> > select a,b,c from tabla1
> > union all
> > select a,b,c from tabla2
> > union all
> > select a,b,c from tabla3 --> TODO TARDA 4seg
> >
> > el tiempo de respuesta esta dentro el promedio aprox 4 segundos sobre un
> > millon de registros. Sin embargo cuando coloco la misma sentencia en una
> > funcion SQL es decir creo un objeto SQL de base con paramentros me tarda
> > 70seg. es decir algo paso!!!. Haciendo pruebas pusimos esta funcion dentro
> > de una segunda funcion y me tarda 140 seg. aprox, eso quiere decir que va
> > aumentando.
> > Creo una funcion SQL porque le paso 2 parametros para el where de cada
> > union. Aca les mando el formato de la creacion de la funcion no la pongo
> > toda porq es compleja pero les recuerdo que solo tarda 4 seg cuando corre
> > sola.
> >
> >
> >
> > CREATE OR REPLACE FUNCTION sql_regenerastock(p_fecha date, p_codprod
> > numeric)
> > RETURNS SETOF regenerastock AS $BODY$
> >
> >
> > select a,b,c from tabla1 where ...
> > union all
> > select a,b,c from tabla2 where ...
> > union all
> > select a,b,c from tabla3 where ...
> > LANGUAGE 'sql' VOLATILE;
> >
> > select * from sql_regenerastock(p_fechaini,p_codprod) -->
> > ESTA ES LA QUE TARDA EL DOBLE.
> >
> > Sera que debo parametrizar alguna variable de la base que usa funciones
> > SQL
> > en forma diferente? o cual puede ser la explicacion.
> > Saludos,
> > ________________________________________________________________
> > Ing. Omar Zeballos Cspedes
> > Grupo Empresarial Kantutani
> >
> >
>
>
> --
> Saludos
> Raúl H. Lapitzondo
>
> --
> TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podrá
> leerlo
>
>
> --
> TIP 4: No hagas 'kill -9' a postmaster
>

--
Saludos
Raúl H. Lapitzondo

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message MIGUEL CANCHAS 2008-03-11 14:34:10 RE: Demora mi consulta
Previous Message MIGUEL CANCHAS 2008-03-11 14:22:08 RE: cambiar encoding