Por favor no olvidar crear los indices en las llaves foráneas de las tablas que 
tienen muchos registros.



>________________________________
> De: Eduardo Arenas C. <[email protected]>
>Para: pgsql-es-ayuda <[email protected]> 
>Enviado: Viernes 13 de abril de 2012 0:06
>Asunto: Re: [pgsql-es-ayuda] Consulta complejas
> 
>
>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 <[email protected]>
>
>
>>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 <[email protected]>
>>-
>>Enviado a la lista de correo pgsql-es-ayuda ([email protected])
>>Para cambiar tu suscripción:
>>http://www.postgresql.org/mailpref/pgsql-es-ayuda
>>
>
>
>

Responder a