On Dec 3, 2007 4:27 PM, Nicolás Domínguez Florit <ndomin@rec.unicen.edu.ar> wrote:Hola Fernando, hola lista! Luego de probar de agregar los índices que me recomendó fernando, la consulta tardo 20 minutos menos. Les paso el nuevo explain analyze: http://explain-analyze.info/query_plans/1521-nicolasdom-siu-2 Se les ocurre algo mas para que mejore? ya que 1 hora me parece que es mucho tiempo.Alguna razon en particular para tener tantos numeric(2), numeric(3) y cosas asi? porque mejor no usas integer en esos casos? tengo entendido que las operaciones sobre numeric son mas costosas otra pregunta es porque tienes tablas sin claves primarias: dices que la tabla rrhh_cubo_publicado_810 tiene 283 registros, por eso me llamo la atencion esto (sera por que esa tabla no tiene clave prmaria?): -> Sort (cost=17.73..18.42 rows=276 width=12) (actual time=22.287..14848.605 rows=10356608 loops=1) Sort Key: t.cod_rrhh_importacion -> Seq Scan on rrhh_cubo_publicado_810 t (cost=0.0..6.54 rows=276 width=12) (actual time=11.032..21.595 rows=274 loops=1) Filter: (cod_institucion <> 7) este ejemplo parece confirmar mi suposicion: prueba=# drop table t1; DROP TABLE prueba=# drop table t2; DROP TABLE prueba=# create table t1 (c1 int, c2 int); CREATE TABLE prueba=# create table t2 (c1 int, c2 int); CREATE TABLE prueba=# insert into t1 select random() * foo, random() * foo from generate_seri es(1, 1000) as foo; INSERT 0 1000 prueba=# insert into t2 select random() * foo, random() * foo from generate_seri es(1, 1000) as foo; INSERT 0 1000 prueba=# select count(*) from t1, t2 prueba-# where t1.c1 = t2.c1 and t1.c1 <> 7; count ------- 1974 (1 row) algo mas, imagino que si has ejecutado vacuum, verdad?