Ayuda para optimizar consulta

From: "Guillermo E(dot) Villanueva" <guillermovil(at)gmail(dot)com>
To: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Ayuda para optimizar consulta
Date: 2015-05-06 15:50:17
Message-ID: CANm+PCB1FRJd67XRK=VZF7z+Q8mHxs3iiXaC6XAB7tterJcQ1g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Amigos los molesto para pedirles si me pueden ayudar a optimizar la
siguiente consulta:

SELECT
uploaddet_importcomp.indice,
historicotemp.clavebeneficiario,
historicotemp.activo
FROM
uploaddet_importcomp left join nacer.historicotemp on
uploaddet_importcomp.fil_clasedoc = historicotemp.aficlasedoc AND
uploaddet_importcomp.fil_tipodoc = historicotemp.afitipodoc AND
uploaddet_importcomp.fil_nrodoc = historicotemp.afidni AND
uploaddet_importcomp.fil_nacim::date = historicotemp.afifechanac::date
WHERE
uploaddet_importcomp.estado='S' and
date_trunc('month', uploaddet_importcomp.pres_fecha::date) =
historicotemp.periodo

El explain me dice:

"Merge Join (cost=2986610.29..3321028.99 rows=1 width=22)"
" Merge Cond: (((historicotemp.afidni)::text =
uploaddet_importcomp.fil_nrodoc) AND (((historicotemp.aficlasedoc)::text) =
uploaddet_importcomp.fil_clasedoc) AND ((historicotemp.afitipodoc)::text =
uploaddet_importcomp.fil_tipodoc) AND (((historicotemp.afi (...)"
" -> Sort (cost=2933436.44..2957517.55 rows=9632444 width=47)"
" Sort Key: historicotemp.afidni,
((historicotemp.aficlasedoc)::text), historicotemp.afitipodoc,
((historicotemp.afifechanac)::date), historicotemp.periodo"
" -> Seq Scan on historicotemp (cost=0.00..630844.44 rows=9632444
width=47)"
" -> Materialize (cost=49759.11..50258.96 rows=99970 width=40)"
" -> Sort (cost=49759.11..50009.04 rows=99970 width=40)"
" Sort Key: uploaddet_importcomp.fil_nrodoc,
uploaddet_importcomp.fil_clasedoc, uploaddet_importcomp.fil_tipodoc,
((uploaddet_importcomp.fil_nacim)::date), (date_trunc('month'::text,
((uploaddet_importcomp.pres_fecha)::date)::timestamp with tim (...)"
" -> Seq Scan on uploaddet_importcomp (cost=0.00..38720.00
rows=99970 width=40)"
" Filter: (estado = 'S'::text)"

Tengo índices por
uploaddet_importcomp.estado
historicotemp.dni

Puedo crear mas índice si es necesario, la historicotemp (que es muy
grande) se actualiza solo una vez al mes

Desde ya agradezco la orientación que me puedan dar.

Un abrazo

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Freddy Martinez Garcia 2015-05-06 15:55:33 retornar varios resultados de consultas
Previous Message Guillermo E. Villanueva 2015-05-06 02:38:52 Re: Almacenamiento archivos multimedia en la nube