Re: consulta que demora demasiado

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Alejandro Carrillo <fasterzip(at)yahoo(dot)es>
Cc: Juan <smalltalker(dot)marcelo(at)gmail(dot)com>, ferd agu <ferdagu(at)gmail(dot)com>, Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: consulta que demora demasiado
Date: 2012-09-06 02:47:43
Message-ID: 1346899028-sup-4143@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Excerpts from Alejandro Carrillo's message of mié sep 05 22:09:52 -0300 2012:
> 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)

La verdad es que el optimizador es bastante potente, y no es claro que
usar EXISTS en vez de IN sea mejor; tampoco es claro que usar una
subconsulta en FROM sea mejor que un join normal. En algunos casos
puede ganar, pero no siempre; y este tipo de trucos debería reevaluarse
al migrar de una versión mayor de Postgres a una posterior, puesto que
es posible que el optimizador se haya vuelto más inteligente para
resolver la consulta como estaba originalmente formulada.

--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Edwin Quijada 2012-09-07 21:10:48 Problema con Zona horaria
Previous Message Alejandro Carrillo 2012-09-06 01:09:52 Re: consulta que demora demasiado