Re: Ayuda para optimizar consulta

From: Anthony Sotolongo <asotolongo(at)gmail(dot)com>
To: "Guillermo E(dot) Villanueva" <guillermovil(at)gmail(dot)com>, pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ayuda para optimizar consulta
Date: 2015-05-06 15:58:15
Message-ID: 554A3A17.4080202@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Guillermo, ¿puedes crear indices en uploaddet_importcomp.estado?
está haciendo un scan por ese campo y creo que puede ayudarte, si
puedes con un explain analyze, ¿que sort method esta utilizando?

saludos

On 06/05/15 12:50, Guillermo E. Villanueva wrote:
> 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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Freddy Martinez Garcia 2015-05-06 16:09:37 Re: retornar varios resultados de consultas
Previous Message Álvaro Hernández Tortosa 2015-05-06 15:57:32 Re: retornar varios resultados de consultas