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:

select * from tab1 t1
where exists (select 1 from tab2 where t1.pk=t2.pk and t2.tipo='GENERADO') 

En este caso el exists es mucho mas rapido que el IN que sería algo asi:

select * from tab1 t1

where  t1.pk in  (select t2.pk from tab2 where t1.pk=t2.pk and 
t2.tipo='GENERADO') 

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...

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.

Saludos Cordiales
Alfonso :)



From: [EMAIL PROTECTED]
To: pgsql-es-ayuda@postgresql.org
Subject: RE: [pgsql-es-ayuda] join - versus - exists [performance]
Date: Sat, 15 Nov 2008 14:09:34 -0100








> 2008/11/15 Jaime Casanova <[EMAIL PROTECTED]>:
> Y mas menos dentro de este mismo contexto bajo su punto de vista que
> es mejor usar, cruzamiento de tablas de la manera
> 
> Select a.campo1
>           b.campo2
> From Foo1 a,
>         Foo2 b
> Where a.id = b.id
> 
> O usar producto cartesiano entre tablas .. a mi personalmente no me
> gusta usar left join .. outer join etc... porque encuentro que el
> codigo queda a veces confuso....pero a nivel de rendimiento existen
> grandes diferencias????

Precisamente ese es mi punto, ya me quedo claro que es mejor el EXISTS que el 
JOIN, por mayor velocidad, pero por ahí comentaron que el NOT EXITS no es igual 
de rápido, por eso pregunte, entonces es mejor utilizar el JOIN adecuado para 
este tipo de cruce?¿ será que la diferencia es tan grande entre ellos?


en mi caso particular JOIN no lo ocupo, en ninguno de su tipo, porque como dice 
Jaime es muy confuso la estructura SQL, el script queda tan engorroso que no se 
entiende a simple vista.... 


por ello, si la diferencia en tiempos entre ellos es abismal ni modo mi 
inclinaré por algún JOIN en lugar del NOT EXISTS...

Get news, entertainment and everything you care about at Live.com. Check it out!
_________________________________________________________________
Connect to the next generation of MSN Messenger 
http://imagine-msn.com/messenger/launch80/default.aspx?locale=en-us&source=wlmailtagline

Responder a