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?