From: | Martín Marqués <martin(at)2ndquadrant(dot)com> |
---|---|
To: | Edwin Quijada <listas_quijada(at)hotmail(dot)com>, "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Query NOt In para optimizar |
Date: | 2014-12-16 10:27:28 |
Message-ID: | 54900910.9050900@2ndquadrant.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda
From | Date | Subject | |
---|---|---|---|
Next Message | Hellmuth Vargas | 2014-12-16 13:07:52 | Re: Query NOt In para optimizar |
Previous Message | jvenegasperu . | 2014-12-16 03:42:37 | Re: Query NOt In para optimizar |