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: Anthony Sotolongo <asotolongo(at)gmail(dot)com>
To: José Alberto Sánchez Nieto (Trabajo) <albertosanchez(at)hiperusera(dot)es>, Ernesto Lozano <elozanohia(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
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:33:16
Message-ID: 260d95fa-8fdf-de39-b5a2-39fa68923607@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Jose Alberto, intenta usar el modulo:

auto_explain

https://www.postgresql.org/docs/9.6/static/auto-explain.html

saludos

On 21/12/16 15:10, "José Alberto Sánchez Nieto (Trabajo)" wrote:
> 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_articulorecord;
> 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.
>
> Firmas de <a href="http://correo.com" class="">correo.com</a> : José
> Alberto Sánchez Nieto
>
> Logo
>
> José Alberto Sánchez Nieto
> /Director Dpto. Tecnologías de la Información/
>
> Hiper Usera, S.L.
> Pol. Industrial Las Avenidas · Torrejón de la Calzada C.P. 28991 (Madrid)
> Tlf: *918609900* · Fax: *918160000*
> albertosanchez(at)hiperusera(dot)es <mailto:albertosanchez(at)hiperusera(dot)es>
>
> eco No me imprimas si no es necesario. Protejamos el medio ambiente
>
> Le informamos que su dirección de correo electrónico, asi como el
> resto de los datos de carácter personal aportados, serán objeto de
> tratamiento automatizado en nuestro ficheros, con la finalidad de
> gestionar la agenda de contactos de nuestra empresa y, para poder
> atender a sus peticiones de consulta via electronica. Vd.podrá en
> cualquier momento ejercer el derecho de acceso, rectificación,
> cancelación y oposición en los términos establecidos en la Ley
> Orgánica 15/1999 mediante notificación escrita con copia de DNI., a la
> entidad, a través de éste e-mail.
>
> La información incluida en este e-mail es CONFIDENCIAL, siendo para su
> usu exlusivo del destinatario arriba mencionado. Si Usted lee este
> mensaje y no es el destinatario indicado, le informamos de que está
> totalmente prohibida la utilización, divulgación, distribución y/o
> reproducción de esta comunicaci´ón sin autorización expresa en virtud
> de la legislacion vigente. Si ha recibido este mensaje por error le
> rogamos nos o notifique inmediatamente por esta misma vía y proceda a
> su eliminación.
>
>
>> El 21 dic 2016, a las 18:48, Ernesto Lozano <elozanohia(at)gmail(dot)com
>> <mailto:elozanohia(at)gmail(dot)com>> escribió:
>>
>> Estimado Jose Alberto
>>
>> Que version usas y que plataforma esta tu DB si puedes enviar TXT
>> del Shell o script para ser mas especifico podemos ayudarte mejor
>>
>> Saludos y Feliz Inicio de la Navidad
>>
>> Atentamente
>>
>> Ernesto Lozano
>> Directo
>> Hia Technology Systems
>> ISV EnterpriseDB para Venezuela y El Caribe
>> The Enterprise Postgres Company
>>
>>
>>
>> El 21 de diciembre de 2016, 12:40, "José Alberto Sánchez Nieto
>> (Trabajo)"<albertosanchez(at)hiperusera(dot)es
>> <mailto:albertosanchez(at)hiperusera(dot)es>>escribió:
>>
>> Hola, tengo un problema con una función, dentro de ella tengo
>> varias select bastante sencillas, el problema es que si ejecuto
>> cualquier de estas select desde fuera de la función tarda muy
>> poco en ejecutarse, en cambio desde dentro de la función tarda
>> muchísimo más, por ejemplo la query desde fuera de la función
>> tarda 0.055ms y la misma dentro de la función tarda 0.239, esta
>> función es llamada muchas veces en un proceso de loop y sospecho
>> que los select de dentro de la función no están utilizando los
>> indices, estos select tienen un where que en su comparativa se
>> hace contra una variable que le paso a la función en cada
>> iteración del loop ¿cómo puedo forzar a que los select de dentro
>> de la función utilizan los indices?, y ¿cómo podría ver el
>> explain plan de los select dentro de la función para asegurarme
>> de que utilizan los indices?.
>> Gracias y saludos.
>>
>> Logo
>>
>> José Alberto Sánchez Nieto
>> /Director Dpto. Tecnologías de la Información/
>>
>> Hiper Usera, S.L.
>> Pol. Industrial Las Avenidas · Torrejón de la Calzada C.P. 28991
>> (Madrid)
>> Tlf:*918609900*· Fax:*918160000*
>> albertosanchez(at)hiperusera(dot)es <mailto:albertosanchez(at)hiperusera(dot)es>
>>
>> ecoNo me imprimas si no es necesario. Protejamos el medio ambiente
>>
>> Le informamos que su dirección de correo electrónico, asi como el
>> resto de los datos de carácter personal aportados, serán objeto
>> de tratamiento automatizado en nuestro ficheros, con la finalidad
>> de gestionar la agenda de contactos de nuestra empresa y, para
>> poder atender a sus peticiones de consulta via electronica.
>> Vd.podrá en cualquier momento ejercer el derecho de acceso,
>> rectificación, cancelación y oposición en los términos
>> establecidos en la Ley Orgánica 15/1999 mediante notificación
>> escrita con copia de DNI., a la entidad, a través de éste e-mail.
>>
>> La información incluida en este e-mail es CONFIDENCIAL, siendo
>> para su usu exlusivo del destinatario arriba mencionado. Si Usted
>> lee este mensaje y no es el destinatario indicado, le informamos
>> de que está totalmente prohibida la utilización, divulgación,
>> distribución y/o reproducción de esta comunicaci´ón sin
>> autorización expresa en virtud de la legislacion vigente. Si ha
>> recibido este mensaje por error le rogamos nos o notifique
>> inmediatamente por esta misma vía y proceda a su eliminación.
>>
>>
>>
>>
>>
>> --
>> Atentamente
>> Ernesto Lozano
>> Director General
>> Hia Techonology Systems, C.A.
>> www.hiatechnology.co.ve <http://www.hiatechnology.co.ve/>
>> 0058 241 867.20.23
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Francisco Olarte 2016-12-21 18:36:33 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
Previous Message José Alberto Sánchez Nieto (Trabajo) 2016-12-21 18:10:05 Re: [pgsql-es-ayuda] Función con select se ejecutar muy lenta comparada con la ejecución de select fuera de la función