[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