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. 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> 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> 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. > > > 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> > 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. > > > > > > -- > Atentamente > Ernesto Lozano > Director General > Hia Techonology Systems, C.A. > www.hiatechnology.co.ve <http://www.hiatechnology.co.ve/> > 0058 241 867.20.23