No olvidar revisar si en el where se esta filtrando por los índices, en preferencia indices unicos. Además cambiar consultas in por exists, o en el mejor de los casos, pasarlas a subconsultas de tabla (el motor ejecuta las consultas de tabla solo una vez a no ser q tenga un campo de una tabla fuera de la subconsulta).Ej: Una consulta asi: Select * from tabla1 t1 where t1.campoA in (select t2.campoA from tabla2 t2 where t2.estado !='E' and t2.fechainicial < 20120415)
Puede pasar a asi: Select * from tabla1 t1, (select t2.campoA from tabla2 t2 where t2.estado !='E' and t2.fechainicial < 20120415) tk where t1.campoA = tk.campoA; O una consulta asi: Select * from tabla1 t1 where exists (select t2.campoA from tabla2 t2 where t2.estado !='E' and t2.fechainicial < 20120415 and t2.campoA = t1.campoA) Puede pasar a asi: Select * from tabla1 t1, (select t2.campoA from tabla2 t2 where t2.estado !='E' and t2.fechainicial < 20120415) tk where t1.campoA = tk.campoA; O una consulta asi: Select * from tabla1 t1 where not exists (select t2.campoA from tabla2 t2 where t2.estado !='E' and t2.fechainicial < 20120415 and t2.campoA = t1.campoA) Puede pasar a asi: Select * from tabla1 t1 left join (select t2.campoA from tabla2 t2 where t2.estado !='E' and t2.fechainicial < 20120415) tk on t1.campoA = tk.campoA where t1 is null; Y los tiempos de ejecución y el costo de las consultas se disminuyen drásticamente. >________________________________ > De: Juan <[email protected]> >Para: ferd agu <[email protected]> >CC: [email protected] >Enviado: Miércoles 5 de septiembre de 2012 19:06 >Asunto: Re: [pgsql-es-ayuda] consulta que demora demasiado > > >Fernando > > >Explain analyze es tu amigo.. >http://www.postgresql.org/docs/9.1/static/sql-explain.html >salu2 >jmdc > > >2012/9/5 ferd agu <[email protected]> > >Estimada gente, >> >>he escrito una consulta en postgresql 8.2, y me esta demorando demasiado >>tiempo en arrojarme los >>resultados. >>Podrian indicarme si hay alguna forma de depurar la consulta o ver donde esta >>el cuello de botella? >>desde ya muy agradecido por sus respuestas! >> >>Saludos >> >>Fernando >> >> >> > > >
