El 09/07/2015 a las 15:11, Alvaro Herrera escribió:
Kernel escribió:
Mis dudas :
- ¿la segunda vez que intente hacer un loop, esta en cache y no cuesta ?
No.
- ¿Mejor lo vuelco a un record.array y recorro el array las veces que
necesite? ¿como lo vuelco?
Podrías crear una tabla temporal con los resultados, CREATE TEMP TABLE
fff AS SELECT ..
- Declaro un cursor y solo lo habro una vez (con el OPEN) y luego lo recorro
con fecth las veces que necesite?
Es fastidioso hacer esto en plpgsql.
- y la ultima que se me ocurre y mas limpia, si utilizo sentecias select
sobre esta que actuaria como una subconsulta que si esta en cache iria
rapido (esto ultimo es algo que creo yo)
No entendí. Si quieres usar los resultados de una consulta varias veces
"dentro" de otra consulta, puedes definirla como un CTE usando la
cláusula WITH, como
WITH fff AS (SELECT ..)
SELECT a. ... FROM fff
Muchas gracias por vuestro tiempo.
El query, como dije antes normalmete va ha devolver entre 0 y 3 filas,
lo que ocurre que tengo que recorrer el resultado varias veces para
pasarlos por unos IF y analizar la situacion, estoy buscando cual sera
la forma mas rapida y no tener que volver a leerlos de nuevo de la tabla.
La opcion que propones de la tabla temporal creo que es la mejor, la mas
limpia, puedo realizar ese analisis a base de querys a la tabla temporal.
Entiendo que la diferencia de tiempo de crear la tabla temporal
(supongo que se creara en memoria) y dejarlo en un array en memoria sera
mínimo ¿no?
No se si estoy intentando ir muy fino, pero es una tabla de movimientos
de almacen a la que se va acceder costantemente y me gustaria que fuera
los mas rapido posible. (seguro que luego derrochare mucho mas tiempo en
cualquier chorrada sin darme cuenta, pero bueno)
Gracias
-
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