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: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: "José Alberto Sánchez Nieto (Trabajo)" <albertosanchez(at)hiperusera(dot)es>
Cc: Ernesto Lozano <elozanohia(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org, Gerardo Herzig <gherzig(at)fmed(dot)uba(dot)ar>, Hellmuth Vargas <hivs77(at)gmail(dot)com>, Anthony Sotolongo <asotolongo(at)gmail(dot)com>, folarte(at)peoplecall(dot)com
Subject: 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-22 14:15:57
Message-ID: 20161222141557.2be6z4o2u56fbwcy@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

"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(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message albertosanchez 2016-12-22 21:09:10 Re: [pgsql-es-ayuda] [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 Anthony Sotolongo 2016-12-22 12:43:54 Re: [pgsql-es-ayuda] Función con select se ejecutar muy lenta comparada con la ejecución de select fuera de la función