Re: consulta que demora demasiado

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

In response to

Responses

Browse pgsql-es-ayuda by date

  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