[Pgsql-ayuda] Vacuum + Explain

Carmen Gloria Sepulveda Dedes csepulveda@atichile.com
Mon, 08 Sep 2003 14:50:08 -0400


Hola.

Estoy tratando de entender como funciona el tema de explain combinado
con vacuum.  Alguien me explicaria por favor como debiera interpretar lo
siguiente:


testdb=> select message_status, count(*)
testdb-> from test_catalog.message
testdb-> group by message_status;
 message_status | count
----------------+--------
 I              | 415000
 U              | 415000
(2 rows)

testdb=> explain select message_status, count(*) from
test_catalog.message group by message_status;
                                          QUERY PLAN
----------------------------------------------------------------------------------------------

 Aggregate  (cost=0.00..57.00 rows=100 width=5)
   ->  Group  (cost=0.00..54.50 rows=1000 width=5)
         ->  Index Scan using inx_msg_status on message
(cost=0.00..52.00 rows=1000 width=5)
(3 rows)

testdb=> vacuum analyze test_catalog.message;
VACUUM

testdb=> explain select message_status, count(*) from
test_catalog.message group by message_status;
                                            QUERY PLAN
---------------------------------------------------------------------------------------------------

 Aggregate  (cost=0.00..30460.00 rows=83000 width=5)
   ->  Group  (cost=0.00..28385.00 rows=830000 width=5)
         ->  Index Scan using inx_msg_status on message
(cost=0.00..26310.00 rows=830000 width=5)
(3 rows)

"message" es una tabla de 830.000 registros.  Antes de hacer el primer
select acaba de hacer un un update a la mitad de los registros.
Entiendo que "vacuum" elimina los registros no validos dentro del
archivo (los actualizados), reordenandolo.  Con esto, la consulta
debiera ser mas rapida (lo es), pero lamentablemente no se como debiera
interpretar los resultados que entrega "explain" (sobretodo la parte de
cost).

Muchas gracias a todos.

CGS