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 >> > > >
