Re: Fw: Uso de left join

From: Alvaro Herrera <alvherre(at)surnet(dot)cl>
To: Multicast <jalcantara(at)olva(dot)com(dot)pe>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Fw: Uso de left join
Date: 2005-07-01 20:27:14
Message-ID: 20050701202714.GA29704@surnet.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Fri, Jul 01, 2005 at 12:00:52PM -0500, Multicast wrote:
> Bueno tambien es una gran ventaja para optimizar un query cuando el join es
> en el where, imaginase que tienes tablas grandes, de la manera que hace el
> join en FROM, hace el join primero de toda las 2 tablas completas para
> luego sobre ello aplicar el filtro, osea que primero se come toda la chamba
> de join de las tablas a unir para luego aplicar el filtro, lo q hace q la
> consulta sea mas lenta, ejemplo:
>
> select a.campo1,b.campo1 from tabla1 a, tabla2 b where a.campo2='XXX' and
> b.campo3(+)=a.campo3;
>
> De esta forma, primero se aplica el filtro, filtrando solanmente la data
> que cumple la condicion (a.campo2='XXX'), y sobre ese filtro proyectado
> recien se le aplica el join (b.campo3(+)=a.campo3) en este caso un left
> join, pero ya no sobre toda la tabla, sino solamente sobre lo q realmente
> filtrado.
> En el caso del join en el "from", hace un join de toda las 2 tablas, si
> estas son grandes entonces se va a sentir el decaimiento en performance
> considerable.

No tengo tiempo de probarlo ahora (mucho menos mirar el codigo), pero me
parece que el optimizador no es tan estupido como tu crees. De hecho
estoy casi seguro que es capaz de "subir" una clausula hacia dentro de
la rama "no nulable" de un OUTER JOIN si cree que es conveniente.

Otra cosa que queria decir es que la sintaxis (+)= no sirve si tienes un
OUTER JOIN con mas de una condicion. Tampoco tengo tiempo ahora para
inventar un ejemplo, pero no deberia ser dificil.

--
Alvaro Herrera (<alvherre[a]surnet.cl>)
Criptografía: Poderosa técnica algorítmica de codificación que es
empleada en la creación de manuales de computadores.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Edwin Quijada 2005-07-02 13:13:15 RE: sobre la concurrencia en PostgresSQL 7.2
Previous Message Ariel Tavella 2005-07-01 19:50:10 Re: postgresql-ayuda-es