El 15/12/2014 19:17, "Edwin Quijada" <listas_quij...@hotmail.com> 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 > > Esto funciona pero es un poco lento , alguien podria darme una idea de hacer algo un poco mas optimo. La tabla A tiene 300K y la B 200K. > > En otras palabras quiero todos los que estan en A pero no en B pero agrupados ya que A es una tabla de detalle por eso es que agrupo. Pense en una vista pero las vistas no se pueden indexar , o si ?
Mmm 200k quiere decir 200 mil? Y las vistas si se pueden indexar pero tienen q ser vistas materializadas con eso creo ganaras muchísima velocidad yo tengo unas tabla que aumenta de 200 mil en 200 mil mensual y tengo vistas materializadas por mes en las que consulto y va muy bien y eso que la tabla tiene 50 campos q para mi es bastante. Pero no has dicho q versión de postgres tienes las vistas materializadas están desde 9.3 y en 9.4 con el refresh que le agregaron ya creo se consolidaron > > Gracias