From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com> |
Cc: | PostgreSQL-foro <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Ayuda con Explain de consulta |
Date: | 2007-05-29 16:07:43 |
Message-ID: | 20070529160743.GE4667@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Luis Guevara escribió:
> Las tablas si tienen los índices en sus respectivos PK y FK
Ok
> ¿ Alguien puede traducirme este explain ?
El explain se lee "de adentro hacia afuera". Primero (es decir lo mas
adentro) hay un index scan en la tabla planilla_empleado, obteniendo
todas las tuplas que cumplen con la condicion de indice plan_id=388.
Eso se calcula todo y se mete en un hash. Luego se hace un recorrido
secuencial de la tabla planilla_empleado_movimiento (completa!) y para
cada registro de ese recorrido, se obtiene la tupla correspondiente del
hash que se habia creado. Esas dos tuplas se "juntan" (usando la
condicion de join que es a.plem_id = b.plem_id) y se entregan como
resultado.
> ¿cuál es la solución?
La solucion -- ¿a que problema? Aca lo que veo es que tu consulta
entrega un resultado muy grande, de 140 mil registros. Un plan
alternativo seria un nestloop con dos indexscans, pero como los
resultados son tantos es posible que salga mas lento.
A guisa de experimento, prueba haciendo un
SET enable_seqscan to OFF;
y luego repite el explain, a ver si el plan es diferente.
Otra idea seria reformular tu consulta de manera que no entregue 140000
registros como resultado ... realmente necesitas tantos?
--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
From | Date | Subject | |
---|---|---|---|
Next Message | Ricardo Martin Gomez | 2007-05-29 16:10:47 | RE: Ayuda con Funcion como procedimiento |
Previous Message | Gunnar Wolf | 2007-05-29 16:04:20 | Re: RECUPERANDO MIS BASES DE DATOS |