Re: Ayuda Consulta de fechas

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: motum hesa <motums(at)gmail(dot)com>
Cc: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ayuda Consulta de fechas
Date: 2011-07-26 16:26:38
Message-ID: 1311696926-sup-5457@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Excerpts from motum hesa's message of vie jul 22 21:41:55 -0400 2011:

> >Hmm, aquí no hay ninguna columna "idtbl". Por favor muestra la consulta
> >y el explain analyze con los nombres correctos de las columnas, sin
> >editorialización.
>
> Esta es la consulta original, ahorita cambio el tiempo que muestra el
> explain debido a las fechas por las que voy.
>
>
> select max(importacionid), min(importacionid),
> unitno, flota
> from datosentrada_his
> where fechacreacion BETWEEN '2011-06-01 00:00:00' and '2011-07-01
> 23:59:59'
> group by unitno,flota order by unitno
>
> "Sort (cost=969443.39..969445.32 rows=775 width=18)"
> " Sort Key: unitno"
> " -> HashAggregate (cost=969394.57..969406.19 rows=775 width=18)"
> " -> Index Scan using ind_fecha on datosentrada_his
> (cost=0.00..925042.61 rows=4435196 width=18)"
> " Index Cond: ((fechacreacion >= '2011-06-01
> 00:00:00'::timestamp without time zone) AND (fechacreacion <=
> '2011-07-01 23:59:59'::timestamp without time zone))"

Creo que parte del problema es que los índices no están bien escogidos.
La lista es la siguiente:

"datosentrada_his_pk" PRIMARY KEY, btree (importacionid)
"fki_importacionid_his" btree (importacionid)
"fki_vehiculo_his" btree (unitno, flota)
"fki_viajeactivo_his" btree (viajeactivo)
"ind_fecha" btree (fechacreacion DESC)
"inf_fecha_id_his" btree (fechacreacion, importacionid)

El índice fki_importacionid_his no sirve para nada porque la llave
primaria ya creó un índice en ese mismo campo. Te sugiero borrarlo.

El índice ind_fecha es redundante con inf_fecha_id_his. A menos que se
uso mucho, te sugiero borrarlo también. Hago notar que un índice se
puede recorrer en ambas direcciones, así que tener uno ASC y uno DESC no
aporta en nada. Te sugiero borrar ind_fecha.

El índice fki_viajeactivo_his suena bastante sospechoso, pero habría que
saber qué hace el campo viajeactivo antes de dar una opinión.

Ninguno de estos cambios haría nada para mejorar esta consulta, pero sí
debería ayudar a que el sistema sea un poco menos lento en términos
generales.

Para mejorar esta consulta creo que deberías tener un índice en
(unitno, flota, fechacreacion). Agrégalo y prueba de nuevo la consulta
a ver si lo usa.

Ya mencionaste que has hecho modificaciones en una BD que escribió
otra persona, sin cambiar los campos de las tablas. Yo te recomendaría
bastante que trataras de hacer una mejora en el diseño moviendo columnas
de manera que tu diseño sea normal (como en "forma normal").

--
Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message motum hesa 2011-07-26 23:36:37 Re: Ayuda Consulta de fechas
Previous Message Dorian Kuroki 2011-07-26 13:41:54 Re: load average