From: | "Eduardo Arenas C(dot)" <edomax(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Consulta complejas |
Date: | 2012-04-13 05:06:04 |
Message-ID: | CAEe4h9rfA9A7fomNG7V9KGMyesLGvMW4Q-yn=46JV6XFoDw=Dg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Victor, antes de modificar cualquier parámetro, yo revisaría la query
primero.
Yo veo estas haciendo muchos join , pero lo estas haciendo sobre todos los
registros en vez de selecionar solo los datos que necesitas hacer tus
calculos, agruparlos y luego hacer los join a los datos ya a grupados. No
se si me doy a entender pero es diferente hacer un join a una tabla de 8
millones de registros hacia varias otras tablas maestras, que tomar primero
la tabla de 8 millones agruparla y hacer cálculos, que te va a dar como
resultado un set menor de datos, y a este set de datos menor le pegas todas
las columnas que necesitas con joins. Entonces creo que necesitas
estructurar con sub querys tu consulta para que sea mas óptima. Además al
set de datos que agrupes obviamente correrá mas rápido si los atributos
están indexados.
debería quedar algo como (es un ejemplo no funcional):
select *
from
(
select a.*,b,c,d,e
from (select *,sum(),count() from existencias group by
1,2,3) as a
left join ... b --otras tablas, donde igual puedes
hacer calculos para minimizar el set de datos para hacer un left join.
left join c
left join d
left join e
) as a
Lo otro que veo son unos trim entre medio, lo mismo de arriba si aplicas
esto a los 8 millones de registros igual va ser costoso, no se por que
tienes que hacer eso?, si tu aplicación genera algunos blancos quizás es
mejor sacar esos blancos con un proceso nocturno habitual, o corregir en la
aplicación que está generando blancos, ojo que si haces un trim ahi el
índice del atributo no sirve de mucho.
Por último, esto donde lo cargas? en una aplicación? o lo llevas a una
planilla de cálculo?, si lo llevas a una planilla de cálculos quizás no es
necesario pedir al motor que ordene eso lo puedes hacer en tu planilla o en
la aplicación desde el código.
Espero esto te sirva para optimizar tu consulta
saludos
Eduardo Arenas
2012/4/12 Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
>
> Excerpts from ViBaSoft's message of jue abr 12 23:33:28 -0300 2012:
>
> > Revise pero prácticamente no comprendo el resultado, si veo que en
> factura y facturas son los que mas tardan y eso es lo que quiero optimizar
>
> Esto es más ilegible aún. ¿Por qué no mandas la URL mejor?
>
> --
> Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org
> )
> Para cambiar tu suscripción:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>
From | Date | Subject | |
---|---|---|---|
Next Message | Pablo Siciliano | 2012-04-13 13:21:12 | Re: Pgpool y postgresql 8.1 |
Previous Message | ViBaSoft | 2012-04-13 03:53:04 | RE: Consulta complejas |