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


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Evgenij M. Baldin                    2:5020/400     24 Jan 2003  19:19:51
 To : Arkady A Drovosekov
 Subject : Re: PostgreSQL непонятки с индексами
 -------------------------------------------------------------------------------- 
 
 Добрый день
 
 Arkady A Drovosekov <drawa@suct.uu.ru> wrote:
 
 > On Thu, 23 Jan 2003 20:05:33 +0500, Evgenij M Baldin <baldin@Slon.inp.nsk.su> 
 > wrote: P.S. У меня проблема с datetime которая в запросах типа where [время] >
 > '23 Jun 2002'  смотреть на индексы отказывается. Это очень сильно тормозит на 
 > таблица в несколько десятков тысяч записей. Придётся переходить на int,
 > наверное, чёрт с ней - c проблемой 2032 года :( [время] > '23 Jun 2002 0:0:0' 
 > не поможет?
 
 Без разницы :(
 
 Более того: вот два эквивалентных запроса: Требуется найти ближайшее
 время, которое меньше заданного:
 
 Запрос с сортировкой 
 
 calibrations=> EXPLAIN select begintime from vepp4term where begintime<'23 Feb
 2002' order by begintime desc limit 1;
 NOTICE:  QUERY PLAN:
 
 Limit  (cost=0.00..0.09 rows=1 width=8)
 
   ->  Index Scan Backward using vepp4term_btime_index on vepp4term 
   -> (cost=0.00..1910.88 rows=20185 width=8)
 
 EXPLAIN
 
 Запрос с агрегатной функцией
 
 calibrations=> EXPLAIN select max(begintime) from vepp4term where begintime<'23
 Feb 2002';
 NOTICE:  QUERY PLAN:
 
 Aggregate  (cost=679.02..679.02 rows=1 width=8)
 
   ->  Seq Scan on vepp4term  (cost=0.00..628.56 rows=20185 width=8)
 
 EXPLAIN
 
 Почему во втором случае seq scan? Может быть мне какой букварь
 почитать? Буду премного благодарен за ссылку.
 Если же сказать:
 
 calibrations=> EXPLAIN select min(begintime) from vepp4term where begintime>'23
 Feb 2002';
 NOTICE:  QUERY PLAN:
 
 Aggregate  (cost=21.44..21.44 rows=1 width=8)
 
   ->  Index Scan using vepp4term_btime_index on vepp4term  (cost=0.00..21.39
   -> rows=20 width=8)
 
 То есть искать ближайшее время болше заданного, то идёт Index Scan
 
 Может быть это глюк какой? Это всё верно для версии 7.1, в версии 7.3
 explaine возвращает всегда seq scan.
 
 calibrations=> EXPLAIN select min(begintime) from vepp4term where begintime>'23
 calibrations'> Feb 2002';
                                     QUERY PLAN
 
 --------------------------------------------------------------------------------
 --
  Aggregate  (cost=625.40..625.40 rows=1 width=8)
 
    ->  Seq Scan on vepp4term  (cost=0.00..608.56 rows=6735 width=8)
 
          Filter: (begintime > '2002-02-23 00:00:00+06'::timestamp with time
 zone)
 (3 rows)
 В таблицу писались с данные с интервалом примерно в 5 минут.
 
 С уважением 
   Евгений
 P.S. Очевидное - невероятное.
 
 -- 
                   Budker Institute of Nuclear Physics
                      e-mail: E.M.Baldin@inp.nsk.su
              WWW: http://www.inp.nsk.su/~baldin
 --- ifmail v.2.15dev5
  * Origin: BINP, Novosibirsk, Russia (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 PostgreSQL непонятки с индексами   Alex G. Bodnar   23 Jan 2003 13:22:05 
 Re: PostgreSQL непонятки с индексами   Evgenij M. Baldin   23 Jan 2003 21:05:33 
 Re: PostgreSQL непонятки с индексами   Alex G. Bodnar   24 Jan 2003 10:43:00 
 Re: [OT] PostgreSQL непонятки с индексами   Dmitri I GOULIAEV   24 Jan 2003 12:45:41 
 Re: PostgreSQL непонятки с индексами   Arkady A Drovosekov   24 Jan 2003 15:43:29 
 Re: PostgreSQL непонятки с индексами   Evgenij M. Baldin   24 Jan 2003 19:19:51 
 Re: PostgreSQL непонятки с индексами   Arkady A Drovosekov   25 Jan 2003 16:29:17 
 Re: PostgreSQL непонятки с индексами   Evgenij M. Baldin   27 Jan 2003 09:56:03 
Архивное /ru.linux/8843e04e5af2.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional