From: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
---|---|
To: | lgarciam <lgarciam(at)vnz(dot)uci(dot)cu> |
Cc: | Ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | RE: Duda entre refcursor y record |
Date: | 2012-07-05 14:42:28 |
Message-ID: | 1341499114-sup-9727@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Excerpts from lgarciam's message of jue jul 05 09:47:46 -0400 2012:
> Alvaro muchas gracias por tu respusta, ahora te pregunto, si en vez de retornar los valores de la consulta utilizando un For Loop, lo hago utilizando un RETURN QUERY obtendría alguna ventaja, o sucedería lo mismo que si realizo un For Loop, me refiero a si con esta otra via también hay que crear un tuplestore con el resultado. (El tuplestore es la variable que se recorre en el ciclo no??)
No estoy seguro pero me parece que es exactamente lo mismo, porque
ppgsql sólo opera de esa forma. (Un tuplestore es un almacén de tuplas.
Recibe todas las tuplas del ciclo o la consulta completa, y cuando la
función termina, el tuplestore se lee tupla por tupla para retornar el
resultado).
¿Qué es lo que quieres optimizar? Porque la diferencia en tiempo entre
una cosa (refcursor) y la otra (variables OUT) debe ser minúscula.
Cuando usas refcursor también hay un tuplestore: el refcursor se guarda
en el tuplestore, y tu código debe abrir el tuplestore, leer el
resultado, y luego al recibir el FETCH empezarás a leer tuplas desde el
plan de ejecución. Nota que hay que hacer un FETCH, en cambio en la
otra solución lees los registros directamente. Toda esa complejidad
extra me hace pensar que no hay por donde perderse.
--
Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
From | Date | Subject | |
---|---|---|---|
Next Message | Lazáro Rubén García Martínez | 2012-07-05 16:52:22 | RE: Duda entre refcursor y record |
Previous Message | Lazáro Rubén García Martínez | 2012-07-05 13:47:46 | RE: Duda entre refcursor y record |