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