> 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


¿Haces mucho esta comparaciones uploaddet_importcomp.fil_clasedoc =
historicotemp.aficlasedoc?

Si la respuesta es "SI", crea índice en esos campos

¿Alguna razón para no definir este campo
uploaddet_importcomp.fil_nacim::date como date?

¿Es un índice parcial uploaddet_importcomp.estado?




Saludos,
Gilberto Castillo
ETECSA, La Habana, Cuba
--- 
This message was processed by Kaspersky Mail Gateway 5.6.28/RELEASE running at 
host imx3.etecsa.cu
Visit our web-site: <http://www.kaspersky.com>, <http://www.viruslist.com>
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a