Re: Tuning auna consulta

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Vida Luz Arista <vida(dot)arista(at)ideay(dot)net(dot)ni>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Tuning auna consulta
Date: 2009-07-16 23:32:01
Message-ID: 20090716233200.GC5203@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Vida Luz Arista escribió:
> Hola a todos,
>
>
>
> Tengo un problema con una consulta, uno de los chicos de desarrollo, tiene
> una consulta que se hace pesada, y esta tarde como unos 2 minutos, lo más
> extraño es que no hay muchos registros y estos es demasiado tiempo sobre
> todo porque aun son pocos registros, me asusta porque cuando la BD crezca
> esto va ser demasiado tiempo, en esta consulta se trabaja con 15 tablas, la
> consulta se las dejo y les pido sugerencias para mejorar la consulta o si es
> posible partirla.

Como no dijiste que versión de Postgres estás usando, voy a adivinar que
es algo anterior a 8.2, en la cual se introdujo la posibilidad de
reordenar algunos OUTER JOIN ... creo que te beneficiarías mucho de eso,
puesto que la consulta involucra una cantidad obscena de ellos.

Una cosa que podrías verificar es si realmente necesitas que sean LEFT
JOIN, y si no, conviertelos en inner joins, porque son más optimizables
que los INNER.

Lo otro es que aún en 8.2 o superior posiblemente te convenga jugar con
los parámetros from_collapse_limit y join_collapse_limit (creo que así
se llaman). Dale una leída a su documentación y auméntalos un poco a
ver si encuentra un plan mejor.

Finalmente, se nota que hay un problema de estimación en este left join:

->Hash Left Join (cost=833.45..3424.85 rows=33810 width=433) (actual time=43.485..4863.803 rows=603936 loops=1)
Hash Cond: (lic.id_estado_pago = ep.id_estado_pago)

A eso hay que echarle una mirada; quizás sea cosa de aumentar las
estadísticas involucradas.

Ahora voy saliendo por el fin de semana, así que suerte con este
problema ...

--
Alvaro Herrera http://www.amazon.com/gp/registry/3BP7BYG9PUGI8
"La gente vulgar sólo piensa en pasar el tiempo;
el que tiene talento, en aprovecharlo"

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Emanuel Calvo Franco 2009-07-16 23:38:27 Re: caracteristicas unicas de postgresql
Previous Message Jaime Casanova 2009-07-16 22:50:10 Re: Tuning auna consulta