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 - Enviado a la lista de correo pgsql-es-ayuda ([email protected]) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda
