Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group