Re: mejorar performance de select

From: Silvio Quadri <silvioq(at)gmail(dot)com>
To: Guillermo Villanueva <guillermovil(at)gmail(dot)com>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: mejorar performance de select
Date: 2011-05-23 15:05:05
Message-ID: BANLkTimCUXL1cm68fTfhA4S5bYHyEno8GA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El día 23 de mayo de 2011 11:46, Guillermo Villanueva
<guillermovil(at)gmail(dot)com> escribió:
> buenos días,
> Tengo una tabla de datos históricos con un millon de registros
> aproximadamente.
> En la tabla tengo un campo periodo, el cual es un timestamp con datos como:
> '2011-01-01', '2011-02-01', '2011-03-01', por cada uno de esos periodos
> tengo aproximadamente 100mil registros, no quiero crear una tabla adicional
> de periodos.
> Tengo creado un índice de la tabla por periodos.
> Si realizo la consulta:
> select periodo from nacer.historicotemp group by periodo
> o
> select distinct periodo from nacer.historicotemp
> demora casi un minuto y el explain menciona que hace lo siguiente:
> "HashAggregate  (cost=310333.40..310333.56 rows=16 width=8) (actual
> time=17045.806..17045.812 rows=17 loops=1)"
> "  ->  Seq Scan on historicotemp  (cost=0.00..301156.72 rows=3670672
> width=8) (actual time=34.278..11863.851 rows=3925154 loops=1)"
> "Total runtime: 17045.998 ms"
> Es posible mejorar esta consulta? Hay forma de decirle que utilice el índice
> por periodo?

Hola ...

No tiene sentido utilizar el índice por período ya que el motor
siempre tiene que recorrer completa para ver todos los períodos. En
este caso, si el tamaño de registro es grande, sería más rápido leer
nada más que el índice (sin leer los demás datos), pero esa
funcionalidad no la tiene Postgres.

¿Porqué no utilizar select max(periodo), min(periodo) ... ? en este
caso sí tomaría el índice y luego completás con un ciclo sencillo del
lado del cliente.

Saludos!
Silvio

> Desde ya muchas gracias
> Saludos
>
> ~~~~~~~~~~~~~~~~
> Guillermo Villanueva
>

--
Silvio Quadri

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Guillermo Villanueva 2011-05-23 15:13:47 Re: mejorar performance de select
Previous Message Álvaro Hernández Tortosa 2011-05-23 14:52:12 Re: mejorar performance de select