Re: Condiciones en LEFT JOIN

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Sergio Gabriel Rodriguez <sgrodriguez(at)gmail(dot)com>
Cc: PostgreSQL Español Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Condiciones en LEFT JOIN
Date: 2010-08-26 15:59:04
Message-ID: 1282838170-sup-9907@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Excerpts from Sergio Gabriel Rodriguez's message of jue ago 26 11:15:26 -0400 2010:
> Hola lista, tengo un pequeño problema de concepto y seguro alguno me
> puede dar un poco de luz, tengo una consulta que usa LEFT JOIN, se la
> resumo esquematicamente:
>
> SELECT a.campo1, b.campo2
> FROM a LEFT JOIN b ON (a.campo3 = b.campo3 AND a.campo4 = b.campo4
> AND b.campo5 = 8)
>
> esta consulta, obviamente es más grande y con muchos más campos, me
> lleva aproximadamente 1 minuto 40 segundos, en cambio si lo hago asi:
>
>
> SELECT a.campo1, b.campo2
> FROM a LEFT JOIN b ON (a.campo3 = b.campo3 AND a.campo4 = b.campo4)
> WHERE b.campo5 = 8;
>
> devuelve el mismo resultado y tarda 400 ms.. hice los explain analyze
> y usa diferentes índices para ejecutar una u otra, mi pregunta es, ¿es
> sólo problema de índices o el resultado que arrojan sólo coinciden de
> casualidad pero hacen cosas diferentes?

No son la misma consulta. Si el resultado es el mismo, es pura
coincidencia. Si el resultado de la segunda te satisface, ¿por qué no
usas un join común y corriente en vez de un outer join?

La diferencia es que la segunda forma no te devolverá valores en que
b.campo5 sea NULL, por lo tanto ningún valor de "a" que no tenga
correspondencia en la "b".

--
Álvaro Herrera <alvherre(at)commandprompt(dot)com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Sergio Gabriel Rodriguez 2010-08-26 16:06:01 Re: Condiciones en LEFT JOIN
Previous Message Mariano Reingart 2010-08-26 15:47:05 Re: compilando en windows con Mingw