Re: Ayuda con Explain de consulta

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

In response to

Browse pgsql-es-ayuda by date

  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