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*
albertosanc...@hiperusera.es <mailto:albertosanc...@hiperusera.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 <elozano...@gmail.com <mailto:elozano...@gmail.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)"<albertosanc...@hiperusera.es <mailto:albertosanc...@hiperusera.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*
    albertosanc...@hiperusera.es <mailto:albertosanc...@hiperusera.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


Responder a