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