Skip site navigation (1) Skip section navigation (2)

Re: Funcion SQL mas lenta que un SQL

From: "Omar Zeballos" <ozeballos(at)kantutani(dot)com>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Funcion SQL mas lenta que un SQL
Date: 2008-03-11 14:09:30
Message-ID: 21db01c88381$878d66b0$1600a8c0@jefeproyectos (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
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


In response to

Responses

pgsql-es-ayuda by date

Next:From: MIGUEL CANCHASDate: 2008-03-11 14:11:06
Subject: RE: Demora mi consulta
Previous:From: MIGUEL CANCHASDate: 2008-03-11 14:06:29
Subject: RE: cambiar encoding

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group