José: 2016-07-11 1:49 GMT+02:00 jvenegasperu . <jvenegasp...@gmail.com>: > tomando en cuenta lo que decia Francisco revise el tamaño de todas las > tablas involucradas y le di a temp_buffers la suma del tamaño de tabla 1, > tabla 2 y tabla 3 con el resultado del tamaño del join. > y de nuevo todo se ejecuta como antes. > son las primeras pruebas pero incluso diria que hasta esta andando mas > rapido.
Es posible que te sobre un poco mas de RAM y acelere. De todas formas... > tengo 2 bases de datos con algunos miles de registro en un primer caso > necesite temp_buffers a 15 megas y en el otro temp_buffer llego a 76 mb. que > es el tamaño que suman t1,t2 y t3 en cada caso > > Gracias ahora nuevamente todo esta andando bien aunque un me pregunto como > actuaria si la BD fuera mas grande y no me alcanzara la memoria. Ya te han sugerido la solucion rapida, compra RAM ( temp_buffers no se usa si no se pide, con lo que si tu funcion brutal va en sesiones contadas no pasa nada, pero si va en muchas, ojito ). De todas maneras, sin haber visto casi nada de tu problema, esto tiene un cierto tufillo a que estas haciendo lo que no deberias en la base de datos ( ese tipo de queries con tablas temporales surgen mucho cuando se prototipan cosas que deberian hacerse de ota forma mediante SQL. En el prototipo no importa demasiado el que la solucion SQL sea un "resource hog" porque es una prueba, pero luego no escala en produccion. Revisa bien tu solucion. Ya te han sugerido ademas por otro lado que pruebes a quitarte t1/t2 si no las necesitas. Eso suele ser facil, solo necesitas pasar Create table t1 as q1, create table t2 as q2, create table t3 as join(t1, t2) from t1, t2 por un create table t3 as join(...) from (q1) t1, (q2) t2 ( o, si el query se beneficia de CTEs usalas, como siempre, mide dos veces corta una ). Francisco Olarte. - 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