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