Главная страница


su.dbms.sql

 
 - SU.DBMS.SQL ------------------------------------------------------------------
 From : del@anadyr.ru                        2:5047/27      05 Mar 2001  17:35:35
 To : All
 Subject : так что же делать с индексами и max()'ами в postrges?
 -------------------------------------------------------------------------------- 
 
 NOTICE:  QUERY PLAN:
 
 Aggregate  (cost=22.50..22.50 rows=1 width=4)
 
   ->  Seq Scan on allcalls_lastmonth  (cost=0.00..20.00 rows=1000 width=4)
 
 EXPLAIN
 
 ===========
 очччень странный cost. Hу да ладно, ищет долго, надо индекс строить.
 ===========
 
 ts=# CREATE INDEX allcalls_lastmonth_calltime_idx on allcalls_lastmonth
 (calltime);
 CREATE
 
 ts=# explain select max(calltime) from allcalls_lastmonth;
 NOTICE:  QUERY PLAN:
 
 Aggregate  (cost=61031.26..61031.26 rows=1 width=4)
 
   ->  Seq Scan on allcalls_lastmonth  (cost=0.00..54469.61 rows=2624661
   ->  width=4)
 
 EXPLAIN
 
 ==========
 Гы, seq scan, это не совсем то, на что я надеялся. Читаем
 fido7.su.dbms.sql. Вычитываем про vacuum analyze. Делаем.
 ==========
 
 ts=# VACUUM verbose ANALYZE allcalls_lastmonth (calltime);
 NOTICE:  --Relation allcalls_lastmonth--
 NOTICE:  Pages 28223: Changed 0, reaped 0, Empty 0, New 0; Tup 2624661: Vac 0,
 Keep/VTL 0/0, Crash 0, UnUsed 0, MinLen 84, Ma
 xLen 84; Re-using: Free/Avail. Space 0/0; EndEmpty/Avail. Pages 0/0. CPU
 13.15s/14.05u sec.
 NOTICE:  Index allcalls_lastmonth_calltime_idx: Pages 5181; Tuples 2624661. CPU
 1.22s/10.29u sec.
 NOTICE:  Index allcalls_lastmonth_pkey: Pages 37855; Tuples 2624661. CPU
 17.73s/11.54u sec.
 VACUUM
 
 ts=# explain select max(calltime) from allcalls_lastmonth;
 NOTICE:  QUERY PLAN:
 
 Aggregate  (cost=61031.26..61031.26 rows=1 width=4)
 
   ->  Seq Scan on allcalls_lastmonth  (cost=0.00..54469.61 rows=2624661
   ->  width=4)
 
 EXPLAIN
 
 =========
 Опять seq scan! Hу не скотина ли, ответте, уважаемые?! Однако:
 =========
 
 ts=# explain select * from allcalls_lastmonth where calltime between '22 feb
 2001 00:00' and '22 feb 2001 00:30';
 NOTICE:  QUERY PLAN:
 
 Index Scan using allcalls_lastmonth_calltime_idx on allcalls_lastmonth 
 (cost=0.00..786.09 rows=200 width=44)
 
 EXPLAIN
 
 ==========
 Ага! А почему же max не удостоился чести использовать index scan?
 ==========
 p.s. postgres 7.0.1 под linux.
 
 --
 wbr, Dmitry Lukin.
 --- Gnus v5.5/XEmacs 20.4 - "Emerald"
  * Origin: HumptyNet (2:5047/27@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 так что же делать с индексами и max()\'ами в postrges?   del@anadyr.ru   05 Mar 2001 17:35:35 
Архивное /su.dbms.sql/11997d9a6f10a.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional