Sobre VACUUM

From: Aldo Alexander Leyva Alvarado <aleyva2004(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Sobre VACUUM
Date: 2005-12-23 19:20:17
Message-ID: 7a47bbbd0512231120x59a55b66j@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buenas Tardes Lista
Una consulta, tengo BD POSTGRESQL 8.1 Sobre un Slackware 10.2, es una BD de
pruebas, sobre ella hago diversas consultas, tenia un SQL que me tomaba
aprox 3 segundos en obtener resultados, en general estaba en ese tiempo 3-4,
luego hice un VACUUM a la toda la BD el mismo SQL se ejecutaba el 1-2
segundos, el problema esta que si el SQL consulta registros mas antiguos el
tiempo que toma es muy alto, demasiado, eso paso despues del VACUUM,
anteriormente no tomaba ese tiempo. Por lo que percibi el VACUUM me
favorecio enormemente sobre registros mas actuales, pero me perjudico de
igual forma para registros mas viejos.

SELECT ma.id_maquina, me.fecha, ma.flg_noduplicar, ma.flg_contador_soles,
me.id_moneda, me.cant_creditos, me.denominacion, mo.simbolo AS moneda FROM
maquinas ma, maquinas_ext me, monedas mo, (SELECT mu.id_maquina AS
mu_id_maquina, mu.n_metros_ultimo AS mu_n_metros_ultimo FROM metros_ultimo
mu WHERE mu.id_local=84 AND mu.fecha_conteo='2005-12-21' AND
mu.n_metros_ultimo=(SELECT MAX(n_metros_ultimo) FROM metros_ultimo WHERE
id_maquina=mu.id_maquina AND fecha_conteo='2005-12-21' AND id_local=84)) AS
MAQUINAS_METROS WHERE MAQUINAS_METROS.mu_id_maquina=ma.id_maquina AND
ma.id_maquina=me.id_maquina AND mo.id_monedas=me.id_moneda AND me.fecha=(SELECT
MAX(fecha) FROM maquinas_ext WHERE id_maquina=ma.id_maquina AND
fecha<='2005-12-21 23:59:59')
Este SQL me toma Aprox, 107.595 ms (ni un segundo)

SELECT ma.id_maquina, me.fecha, ma.flg_noduplicar, ma.flg_contador_soles,
me.id_moneda, me.cant_creditos, me.denominacion, mo.simbolo AS moneda FROM
maquinas ma, maquinas_ext me, monedas mo, (SELECT mu.id_maquina AS
mu_id_maquina, mu.n_metros_ultimo AS mu_n_metros_ultimo FROM metros_ultimo
mu WHERE mu.id_local=2 AND mu.fecha_conteo='2005-11-02' AND
mu.n_metros_ultimo=(SELECT MAX(n_metros_ultimo) FROM metros_ultimo WHERE
id_maquina=mu.id_maquina AND fecha_conteo='2005-11-02' AND id_local=2)) AS
MAQUINAS_METROS WHERE MAQUINAS_METROS.mu_id_maquina=ma.id_maquina AND
ma.id_maquina=me.id_maquina AND mo.id_monedas=me.id_moneda AND me.fecha=(SELECT
MAX(fecha) FROM maquinas_ext WHERE id_maquina=ma.id_maquina AND
fecha<='2005-11-02 23:59:59')
Este SQL me toma Aprox, 7232.951 ms (mas de 7 segundos)

Algun consejo, agradezcon de antemano por sus respuestas

Saludos

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Juanky Moral 2005-12-23 20:11:55 Re: Sobre VACUUM
Previous Message Pablo Braulio 2005-12-23 19:13:28 Re: Ayuda con trigger.