"José Alberto Sánchez Nieto (Trabajo)" escribió:
> Esta función es llamada desde un programa en java, el caso es que se ejecuta 
> entre 400.000 y 800.000 veces y claro, aunque las diferencias tal y cómo se 
> han mostrado son pocas, al producirse en tantas ejecuciones sí que son muy 
> significativas.

Esto es mal diseño.  Considera agregar otra función que en lugar de
retornar los detalles de los registros uno a uno, te devuelva los
400.000 u 800.000 de una sola vez, para evitar el excesivo sobrecosto de
invocar plpgsql tantas veces.


> - Poner dentro de la función la select sin parámetros poniendo el valor 
> directamente y me tarda más ó menos igual (0.230)

> - Lo que sí me ha funcionado es la sugerencia de Alvaro, desde la shell poner 
> el PREPARE y luego utilizar el EXPLAIN ANALIZE EXECUTE, con esto sí que los 
> tiempos son exactamente iguales que lanzar la consulta desde la shell (0.045)

Ambos resultados llevan a la misma conclusión: las consultas no son
lentas, el problema es el sobrecosto de meterlas en plpgsql.  Ya te
comentaron eso antes.

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a