Tengo una consulta que me esta tardando mucho y me gustaría que cuando tengan unos minutos le echen un vistazo para ver si se les ocurre algo. Les paso las tabas, los registros de cada tabla, la consulta y el explain analyze.

Uso un motor 8.2.4,

Tablas:
-------

CREATE TABLE rrhh_cargos
(
  numero_cargo numeric(9) NOT NULL,
  cod_ona_unidad_academica integer NOT NULL,
  cod_ona_rama character(4) NOT NULL,
  cod_ona_disciplina character(4) NOT NULL,
  cod_ona_area character(4) NOT NULL,
  cod_fuente_financiamiento numeric(2) NOT NULL,
  cod_rrhh_importacion integer NOT NULL,
  cuil_cuit numeric(11) NOT NULL,
  cod_cargo_universidad character(4) NOT NULL,
  cod_rrhh_estado_laboral integer NOT NULL,
  cod_rrhh_estado_cargo character(1),
  cod_rrhh_tipo_planta character(1) NOT NULL,
  cod_rrhh_situacion_laboral integer NOT NULL,
  cod_rrhh_agrupamiento_no_docente character(1),
  cod_rrhh_nivel_ensenianza integer NOT NULL,
  grado numeric(1) NOT NULL,
  horas_dedicacion numeric(2) NOT NULL,
  meses_antiguedad numeric(3) NOT NULL,
  anios_antiguedad numeric(2) NOT NULL,
  fecha_alta date NOT NULL,
  fecha_baja date,
  cod_dependencia numeric(2) NOT NULL,
  cod_sub_dependencia numeric(2) NOT NULL,
  programa numeric(2) NOT NULL,
  subprograma numeric(2) NOT NULL,
  proyecto numeric(2) NOT NULL,
  actividad numeric(2) NOT NULL,
  jefatura character(1) NOT NULL,
  cod_rrhh_equivalencia_cargo integer NOT NULL,
  cod_rrhh_escalafon character(1) NOT NULL,
  numero_cargo_persona integer,
  dedicacion_docente numeric(5,2),
  dedicacion_investigacion numeric(5,2),
  dedicacion_extension numeric(5,2),
  dedicacion_gestion numeric(5,2),
  CONSTRAINT rrhh_cargos_pkey PRIMARY KEY (numero_cargo, cod_rrhh_importacion),
  CONSTRAINT rrhh_cargos_cod_cargo_universidad_fkey FOREIGN KEY (cod_cargo_universidad, cod_rrhh_escalafon, cod_rrhh_importacion)
      REFERENCES rrhh_escalafones_universidades (cod_cargo_universidad, cod_rrhh_escalafon, cod_rrhh_importacion) MATCH SIMPLE
      ON UPDATE RESTRICT ON DELETE RESTRICT,
  CONSTRAINT rrhh_cargos_cod_fuente_financiamiento_fkey FOREIGN KEY (cod_fuente_financiamiento)
      REFERENCES fuentes_financiamiento (cod_fuente_financiamiento) MATCH SIMPLE
      ON UPDATE RESTRICT ON DELETE RESTRICT,
  CONSTRAINT rrhh_cargos_cod_ona_rama_fkey FOREIGN KEY (cod_ona_rama, cod_ona_disciplina, cod_ona_area)
      REFERENCES ona_jerarquias (cod_ona_rama, cod_ona_disciplina, cod_ona_area) MATCH SIMPLE
      ON UPDATE RESTRICT ON DELETE RESTRICT,
  CONSTRAINT rrhh_cargos_cod_ona_unidad_academica_fkey FOREIGN KEY (cod_ona_unidad_academica)
      REFERENCES ona_unidades_academicas (cod_ona_unidad_academica) MATCH SIMPLE
      ON UPDATE RESTRICT ON DELETE RESTRICT,
  CONSTRAINT rrhh_cargos_cod_rrhh_agrupamiento_no_docente_fkey FOREIGN KEY (cod_rrhh_agrupamiento_no_docente)
      REFERENCES rrhh_agrupamientos_no_docentes (cod_rrhh_agrupamiento_no_docente) MATCH SIMPLE
      ON UPDATE RESTRICT ON DELETE RESTRICT,
  CONSTRAINT rrhh_cargos_cod_rrhh_equivalencia_cargo_fkey FOREIGN KEY (cod_rrhh_equivalencia_cargo, cod_rrhh_escalafon)
      REFERENCES rrhh_equivalencias_cargos (cod_rrhh_equivalencia_cargo, cod_rrhh_escalafon) MATCH SIMPLE
      ON UPDATE RESTRICT ON DELETE RESTRICT,
  CONSTRAINT rrhh_cargos_cod_rrhh_estado_cargo_fkey FOREIGN KEY (cod_rrhh_estado_cargo)
      REFERENCES rrhh_estados_cargos (cod_rrhh_estado_cargo) MATCH SIMPLE
      ON UPDATE RESTRICT ON DELETE RESTRICT,
  CONSTRAINT rrhh_cargos_cod_rrhh_estado_laboral_fkey FOREIGN KEY (cod_rrhh_estado_laboral)
      REFERENCES rrhh_estados_laborales (cod_rrhh_estado_laboral) MATCH SIMPLE
      ON UPDATE RESTRICT ON DELETE RESTRICT,
  CONSTRAINT rrhh_cargos_cod_rrhh_nivel_ensenianza_fkey FOREIGN KEY (cod_rrhh_nivel_ensenianza)
      REFERENCES rrhh_niveles_ensenianza (cod_rrhh_nivel_ensenianza) MATCH SIMPLE
      ON UPDATE RESTRICT ON DELETE RESTRICT,
  CONSTRAINT rrhh_cargos_cod_rrhh_situacion_laboral_fkey FOREIGN KEY (cod_rrhh_situacion_laboral)
      REFERENCES rrhh_situaciones_laborales (cod_rrhh_situacion_laboral) MATCH SIMPLE
      ON UPDATE RESTRICT ON DELETE RESTRICT,
  CONSTRAINT rrhh_cargos_cod_rrhh_tipo_planta_fkey FOREIGN KEY (cod_rrhh_tipo_planta)
      REFERENCES rrhh_tipos_planta (cod_rrhh_tipo_planta) MATCH SIMPLE
      ON UPDATE RESTRICT ON DELETE RESTRICT,
  CONSTRAINT rrhh_cargos_cuil_cuit_fkey FOREIGN KEY (cuil_cuit, cod_rrhh_importacion)
      REFERENCES rrhh_datos_personales (cuil_cuit, cod_rrhh_importacion) MATCH SIMPLE
      ON UPDATE RESTRICT ON DELETE RESTRICT
) ;
-- cantidad de registros: 1.749.254


CREATE TABLE rrhh_escalafones_universidades
(
  cod_cargo_universidad character(4) NOT NULL,
  cod_rrhh_equivalencia_cargo integer NOT NULL,
  cod_rrhh_escalafon character(1) NOT NULL,
  cod_rrhh_importacion integer NOT NULL,
  cod_rrhh_nivel_ensenianza integer NOT NULL,
  descripcion character varying(30) NOT NULL,
  dedicacion character varying(30) NOT NULL,
  horas_dedicacion numeric(2) NOT NULL,
  sueldo_basico numeric(10,2) NOT NULL,
  remunerativo_bonificable numeric(10,2) NOT NULL,
  remunerativo_no_bonificable numeric(10,2) NOT NULL,
  no_remunerativo_bonificable numeric(10,2) NOT NULL,
  no_remunerativo_no_bonificable numeric(10,2) NOT NULL,
  otra_remuneraciones numeric(10,2) NOT NULL,
  decreto_1610 numeric(10,2) NOT NULL,
  gastos_representacion numeric(10,2) NOT NULL,
  CONSTRAINT rrhh_escalafones_universidades_pkey PRIMARY KEY (cod_cargo_universidad, cod_rrhh_escalafon, cod_rrhh_importacion),
  CONSTRAINT rrhh_escalafones_universidades_cod_rrhh_equivalencia_cargo_fkey FOREIGN KEY (cod_rrhh_equivalencia_cargo, cod_rrhh_escalafon)
      REFERENCES rrhh_equivalencias_cargos (cod_rrhh_equivalencia_cargo, cod_rrhh_escalafon) MATCH SIMPLE
      ON UPDATE RESTRICT ON DELETE RESTRICT,
  CONSTRAINT rrhh_escalafones_universidades_cod_rrhh_importacion_fkey FOREIGN KEY (cod_rrhh_importacion)
      REFERENCES rrhh_importaciones (cod_rrhh_importacion) MATCH SIMPLE
      ON UPDATE RESTRICT ON DELETE RESTRICT,
  CONSTRAINT rrhh_escalafones_universidades_cod_rrhh_nivel_ensenianza_fkey FOREIGN KEY (cod_rrhh_nivel_ensenianza)
      REFERENCES rrhh_niveles_ensenianza (cod_rrhh_nivel_ensenianza) MATCH SIMPLE
      ON UPDATE RESTRICT ON DELETE RESTRICT
) ;
-- cantidad de registros: 24.063


CREATE TABLE rrhh_cubo_publicado_810
(
  cod_rrhh_importacion integer,
  cod_pedido integer,
  cod_institucion integer,
  periodo date,
  fecha_desde timestamp without time zone,
  fecha_publicacion timestamp with time zone
) ;
-- cantidad de registros: 283


CREATE TABLE rrhh_detalles_liquidaciones_haberes
(
  cod_rrhh_concepto_liquidacion_haberes numeric(6) NOT NULL,
  cod_rrhh_importacion integer NOT NULL,
  numero_cargo numeric(9) NOT NULL,
  importe numeric(12,2) NOT NULL,
  anio_retroactivo numeric(4) NOT NULL,
  mes_retroactivo numeric(2) NOT NULL,
  CONSTRAINT rrhh_detalles_liquidaciones_h_cod_rrhh_concepto_liquidacio_fkey FOREIGN KEY (cod_rrhh_concepto_liquidacion_haberes, cod_rrhh_importacion)
      REFERENCES rrhh_conceptos_liquidaciones_haberes (cod_rrhh_concepto_liquidacion_haberes, cod_rrhh_importacion) MATCH SIMPLE
      ON UPDATE RESTRICT ON DELETE RESTRICT,
  CONSTRAINT rrhh_detalles_liquidaciones_haberes_cod_rrhh_importacion_fkey FOREIGN KEY (cod_rrhh_importacion)
      REFERENCES rrhh_importaciones (cod_rrhh_importacion) MATCH SIMPLE
      ON UPDATE RESTRICT ON DELETE RESTRICT,
  CONSTRAINT rrhh_detalles_liquidaciones_haberes_numero_cargo_fkey FOREIGN KEY (numero_cargo, cod_rrhh_importacion)
      REFERENCES rrhh_cargos (numero_cargo, cod_rrhh_importacion) MATCH SIMPLE
      ON UPDATE RESTRICT ON DELETE RESTRICT
) ;
-- cantidad de registros: 29.566.415


Consulta:
---------

explain analyze
select t.periodo,
       t.cod_institucion,
       ca.numero_cargo,
       ca.cuil_cuit,
       ca.cod_rrhh_escalafon,
       ca.cod_cargo_universidad,
       eu.descripcion as categ_univ_descripcion,
       eu.dedicacion as categ_univ_dedicacion,
       ca.cod_rrhh_equivalencia_cargo,
       ca.cod_ona_unidad_academica,
       ca.cod_fuente_financiamiento,
       ca.cod_rrhh_estado_laboral,
       ca.cod_rrhh_estado_cargo,
       ca.cod_rrhh_tipo_planta,
       ca.cod_rrhh_situacion_laboral,
       ca.cod_rrhh_nivel_ensenianza,
       ca.meses_antiguedad,
       ca.horas_dedicacion,
    ca.numero_cargo_persona as nro_cargo_pers,
    ca.cod_rrhh_agrupamiento_no_docente,
       d.cod_rrhh_concepto_liquidacion_haberes,
       d.anio_retroactivo,
       d.mes_retroactivo,
       d.importe,
       1 as  Cant_ConceptosXCargos   
from rrhh_cargos ca,
     rrhh_escalafones_universidades eu,
     rrhh_cubo_publicado_810 t,
     rrhh_detalles_liquidaciones_haberes d
where t.cod_institucion<>7 and
ca.cod_rrhh_importacion=t.cod_rrhh_importacion
and eu.cod_cargo_universidad = ca.cod_cargo_universidad
and eu.cod_rrhh_importacion = ca.cod_rrhh_importacion
and eu.cod_rrhh_escalafon = ca.cod_rrhh_escalafon
and (ca.cod_rrhh_escalafon = 'D') and (ca.cod_rrhh_nivel_ensenianza = 1 )
and d.cod_rrhh_importacion=t.cod_rrhh_importacion
and d.numero_cargo = ca.numero_cargo


Explain Analyze:
-----------------

http://explain-analyze.info/query_plans/1499-nicolasdom-siu


Antes de correr la consulta se habia realizado:
  analyze rrhh_cargos;
  analyze rrhh_escalafones_universidades;
  analyze rrhh_cubo_publicado_810;
  analyze rrhh_detalles_liquidaciones_haberes ;


Muchas Gracias!

Nicolas.