Hola lista Martín disculpe la ignorancia, pero tengo entendido que si se coloca una condición filtró en el where de la tabla B, el left outer se convierte en inner join y se pierde el efecto. Por favor corrijame si me equivoco El 16/12/2014 05:28, "Martín Marqués" <mar...@2ndquadrant.com> escribió:
> El 15/12/14 a las 21:17, Edwin Quijada escribió: > > Hola! > > Estoy haciedno un select que implica dos tablas , es mas bien un except, > hasta aho todo bien ya lo hice pero ando buscando una forma un poco mas > rapida de lograr lo que quiero > > create table A( fid int, fbanco int, name varchar(20), > fecha timestamp ); create table B( pid int, user > varchar(20), address varchar(30), fecha_Actual date ) > > Necesito los registros que estan en A pero no estan en B, hice algo como > esto > > select fid,fbanco,fecha from A where fbanco = 1 AND fid NOT IN(select > pid FROM B ) group by 1,2,3 > > SELECT fid, fbanco, fecha FROM A LEFT OUTER JOIN B ON (A.fid=B.pid) > WHERE B.pid IS NULL > GROUP BY 1,2,3; > > Ese subselect con el IN va a ser muy lento con la cantidad de registros > que tiene la tabla B. Es mucho más optimo unir las tablas y filtrar las > que tuplas de la tabla A que no tienen su correspondiente referencia en B. > > Saludos, > > -- > Martín Marqués http://www.2ndQuadrant.com/ > PostgreSQL Development, 24x7 Support, Training & Services > > - > Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org > ) > Para cambiar tu suscripción: > http://www.postgresql.org/mailpref/pgsql-es-ayuda >