Mejorar rendimiento en consulta usando fechas

From: Rodrigo Ruiz <rruizf(at)gmail(dot)com>
To: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Mejorar rendimiento en consulta usando fechas
Date: 2013-04-25 18:33:19
Message-ID: 517976EF.60909@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola,
quisiera pedir ayuda para mejorar el rendimiento de las consultas select
que se hacen a una tabla que contiene cerca de 13 millones de registros,
básicamente no se actualiza ni se insertan nuevos registros, sólo se
hacen consultas.
He creado algunos indices en campos para mejorar el rendimiento y anda
bastante bien, sin embargo, cuando se hace una consulta que involucra
fechas, tarda demasiado.
Existe un campo llamado fecha_nacimiento y una consulta de ejemplo sería
traer todos las personas que tengan entre 25 y 35 años a la fecha.

La consulta sería algo como:

select * from persona where fecha_nacimiento between (current_date -
interval '35 years') and (current_date - interval '25 years');

La consulta, en un primer intento, tarda cerca de 6 minutos y medio, el
equipo donde se está probando es uno que tenemos para desarrollo, no es
un servidor dedicado y tiene un par de discos en raid 1; 4 GB de RAM y
no recuerdo que procesador pero debe ser algo como core2 o similar de X
GHz, lo cual no es mucho pero creo que podría obtener un mejor rendimiento.

* Quizás la consulta no está bien planteada y pueda mejorar comparando
los campos de otra forma?
* El campo fecha_nacimiento está indexado (clustered) ordenado
descendentemente.

Muchas gracias!

--
Rodrigo Ruiz Fuentes

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripcin:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2013-04-25 19:03:43 Re: Mejorar rendimiento en consulta usando fechas
Previous Message Arcel Labrada Batista 2013-04-23 19:35:38 Re: convertir timestamp a integer