Re: Mejorar performance de un query.

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Esteban Osorio <eosorio(at)economia(dot)cl>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Mejorar performance de un query.
Date: 2007-05-08 13:06:35
Message-ID: 20070508130635.GC4685@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Esteban Osorio escribió:
> Hola a todos,

Que version estas usando?

Creo que aca el principal problema es el outer join, que esta bloqueando
la optimizacion del join entre historia y documento. En una version
reciente (creo que 8.2) se introdujo la posibilidad de reordenar outer
joins, lo cual es muy beneficioso en casos como este.

Otra cosa que me llama la atencion es que la estimacion de registros de
historia se equivoca en casi dos ordenes de magnitud; puede ser que eso
este haciendo que escoja mal el resto del plan.

Me refiero a este nodo de aca:

-> Index Scan using idx_hist_fecha on historia (cost=0.00..5.95 rows=1 width=34) (actual time=0.079..1.998 rows=71 loops=1)
Index Cond: ((fecha >= '2007-04-04'::date) AND (fecha <= '2007-04-04'::date))
Filter: ((movimiento = 'A'::bpchar) AND (actual = 1100::numeric))

(espera 1 tupla, recibe 71) que se repite en este otro nodo:

-> Index Scan using idx_hist_fecha on historia (cost=0.00..5.95 rows=1 width=24) (actual time=0.046..0.548 rows=36 loops=71)
Index Cond: ((fecha >= '2007-04-04'::date) AND (fecha <= '2007-04-04'::date))
Filter: ((movimiento = 'C'::bpchar) AND (actual = 1100::numeric))

(espera 1 tupla, recibe 36)

Quizas lo que podrias hacer es capturar mas datos estadisticos para
historia, a ver si mejora la estimacion. Si mal no recuerdo la sintaxis
es algo asi:

alter table historia alter column fecha set statistics 100;
analyze;

Prueba tambien cambiando la condicion
fecha BETWEEN 'una fecha' AND 'la misma fecha'

en
fecha = 'la fecha'

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Leonel 2007-05-08 13:28:07 Re: Mejor opcion de alta disponibilidad y balanceo de carga?
Previous Message Pedro Mateo 2007-05-08 13:00:52 POR FAVOR AYUDA!! tengo una semana con un problema sensillo sobre tablas temporales