Re: Re: [pgsql-es-ayuda] Función con select se ejecutar muy lenta comparada con la ejecución de select fuera de la función

From: Gerardo Herzig <gherzig(at)fmed(dot)uba(dot)ar>
To: José Alberto Sánchez Nieto (Trabajo) <albertosanchez(at)hiperusera(dot)es>
Cc: pgsql-es-ayuda(at)postgresql(dot)org, Ernesto Lozano <elozanohia(at)gmail(dot)com>
Subject: Re: Re: [pgsql-es-ayuda] Función con select se ejecutar muy lenta comparada con la ejecución de select fuera de la función
Date: 2016-12-21 18:57:07
Message-ID: 1312036554.5698143.1482346627222.JavaMail.root@fmed.uba.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

----- Mensaje original -----
> De: "José Alberto Sánchez Nieto (Trabajo)" <albertosanchez(at)hiperusera(dot)es>
> Para: "Ernesto Lozano" <elozanohia(at)gmail(dot)com>
> CC: pgsql-es-ayuda(at)postgresql(dot)org
> Enviados: Miércoles, 21 de Diciembre 2016 15:10:05
> Asunto: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Función con select se ejecutar muy lenta comparada con la ejecución de
> select fuera de la función
>
> Hola Ernesto, la versión que utilizo es la 9.6.1 y lo que utilizo es
> lo siguiente:
> - Desde shell:
> select * from d_articulo where id_articulo = ‘2097’
> Con el explain plan me dice que utiliza un index scan lo cual es
> correcto ya que tengo un índice por ese campo y el tiempo de
> ejecución es 0.045ms
>
>
> -Desde función:
> CREATE OR REPLACE FUNCTION prueba_velocidad(
> v_id_articulo character varying
> RETURNS void AS
> $BODY$
> DECLARE
> vv_reg_articulo record;
> BEGIN
> EXECUTE ‘SELECT * FROM d_articulo WHERE id_arjticulo = ‘ ||
> quote_literal($1)
> INTO vv_reg_articulo
> USING v_id_articulo;
>
>
> RETURN;
> END;
> $BODY$
> LANGUAGE plpgsql STABLE
> COST 100;
> ALTER FUNCTION prueba_velocidad(character varying)
> OWNER TO valmanar;
>
>
> Y la ejecuto con: select prueba_velocidad(‘2097’) dándome unos
> tiempos de 0.229ms
> He probado sin el quote_literal simplemente con $1 y tampoco,
> evidentemente también probé sin el execute poniendo la query normal
> cómo la del shell y sigue dándome unos tiempos muy altos. ¿Qué puede
> ser?.
> Gracias por la ayuda y saludos.

Me suena razonable esos tiempos, porque estas añadiendo un overhead considerable
1) Utilizando pl/pgsql en lugar de SQL,
2) Utilizando EXECUTE

Proba haciendo una funcion el SQL, ya que para este caso al menos, usar pl no tiene mucho sentido.

HTH
Gerardo

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripcin:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2016-12-21 18:59:17 Re: Re: [pgsql-es-ayuda] Función con select se ejecutar muy lenta comparada con la ejecución de select fuera de la función
Previous Message Ernesto Lozano 2016-12-21 18:48:46 Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Función con select se ejecutar muy lenta comparada con la ejecución de select fuera de la función