From: | Alejandro Carrillo <fasterzip(at)yahoo(dot)es> |
---|---|
To: | Juan <smalltalker(dot)marcelo(at)gmail(dot)com>, ferd agu <ferdagu(at)gmail(dot)com> |
Cc: | "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: consulta que demora demasiado |
Date: | 2012-09-06 01:09:52 |
Message-ID: | 1346893792.15916.YahooMailNeo@web171505.mail.ir2.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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 <smalltalker(dot)marcelo(at)gmail(dot)com>
>Para: ferd agu <ferdagu(at)gmail(dot)com>
>CC: pgsql-es-ayuda(at)postgresql(dot)org
>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 <ferdagu(at)gmail(dot)com>
>
>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
>>
>>
>>
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2012-09-06 02:47:43 | Re: consulta que demora demasiado |
Previous Message | Jose Ayala Pineda | 2012-09-06 00:08:24 | Problema con ORDER BY |