Re: join - versus - exists [performance]

From: "Verny Mata" <vernym(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: join - versus - exists [performance]
Date: 2008-11-17 14:23:53
Message-ID: 3f6bb8b00811170623k192795d1nba27645618f26d32@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Relacionado con el tema:

http://es.wikipedia.org/wiki/Join

Específicamente "notación implícita"

El 17 de noviembre de 2008 6:08, Javier Chávez B. <jchavezb(at)gmail(dot)com>escribió:

> 2008/11/17 Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>:
> > ALFONSO REYES escribió:
> >>
> >> Estimados yo soy nuevo con la base postgres, pero en oracle e manejado
> >> grandes volumenes, y les comento que la clausula "EXISTS"como "NO
> >> EXISTS" para subconsultas es mucho pero mucho mas rapido que el "IN" o
> >> "NOT IN", siempre y cuando la subconsulta sea un sql y no un codigo
> >> quemado es decir:
> >
> > El optimizador de Postgres es totalmente diferente del de Oracle.
> >
> > En Postgres, EXISTS solía ser más rápido que IN (select), hasta que el
> > manejo de IN fue cambiado en 7.4 (creo). Ahora en 8.4 con lo de los
> > semijoins y antijoins es posible que las cosas nuevamente sean
> > diferentes.
> >
> > En realidad lo único estable que puede decirse es que de una versión a
> > la siguiente es posible que la versión que antes era más lenta pase a
> > ser la más rápida, y que la forma de saber es probar ambas :-)
> >
> >> Respecto al left join y su variante right join, creo que en postgres
> >> nadie se va a salvar de usuarlos algun momento, pero cuando no es
> >> necesario yo prefiero el clasico producto cartesiano con el simbolo "=
> >> ", y no el inner join o sentencias del sql anci...
> >
> > En Postgres, usar el producto cartesiano con = es lo mismo que usar un
> > inner join. Los outer join son una herramienta absolutamente
> > indispensable, y si a alguien le parecen confusos, pues mala suerte :-)
>
> MMmmmm no era eso lo que quieria leer .. pero lo sospeche desde un
> principio :P !
>
> Tendre que aprender a hacer la rueda de nuevo :0)
>
> >
> >> Si alguien me indica alguna manera de evitar el left join y right
> >> join, asi como en oracle existe el operador (+) el mismo que se coloca
> >> en cualquiera de los lados de las comparaciones donde se conoce que no
> >> va a tener la información.
> >
> > Como ya dijo Jaime, LEFT y RIGHT son la forma estandar (SQL) de definir
> > los outer join. La sintaxis (+)= de Oracle predata la definición del
> > estándar y entiendo que está obsoleta.
> >
> > --
> > Alvaro Herrera
> http://www.amazon.com/gp/registry/CTMLCN8V17R4
> > "Por suerte hoy explotó el califont porque si no me habría muerto
> > de aburrido" (Papelucho)
> > --
> > TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podrá
> leerlo
> >
>
>
>
> --
> Cumprimentos
> jchavez
> linux User #397972 on http://counter.li.org/
> --
> TIP 5: ¿Has leído nuestro extenso FAQ?
> http://www.postgresql.org/docs/faqs.FAQ.html
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Javier Chávez B. 2008-11-17 14:47:26 Re: sobre documentacion
Previous Message Viktor 2008-11-17 14:06:58 Re: PG Day