powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите правиль создать индекс.
2 сообщений из 2, страница 1 из 1
Помогите правиль создать индекс.
    #34708445
Фотография ss25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВОт таблица




Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
proxy=# \d detail
                  Table "public.detail"
  Column   |            Type             |   Modifiers
-----------+-----------------------------+---------------
 time      | timestamp without time zone | default now()
 bytesin   | integer                     |
 bytesout  | integer                     |
 username  | character varying( 255 )      |
 source_ip | character( 16 )               |
 dest_ip   | character( 16 )               |
 dest_p    | integer                     |
 host      | character varying( 255 )      |
Indexes:
    "idx_detail_time" btree ("time")
    "idx_detail_usertime" btree ("time", username)
Triggers:
    day_stat_insert AFTER INSERT ON detail FOR EACH ROW EXECUTE PROCEDURE inser_day_stat()

вот запрос
Код: plaintext
1.
proxy=# SELECT SUM(bytesin+bytesout), username FROM detail WHERE username='Satana' AND time > to_date('2007-08-06', 'yyyy-mm-dd') AND time < to_
date('2007-08-06', 'yyyy-mm-dd') + interval '1 day' GROUP by username;


а план выполнения
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
                                                                                                QUERY PLAN

----------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------
 HashAggregate  (cost= 8 . 83 .. 8 . 86  rows= 2  width= 17 ) (actual time= 1 . 807 .. 1 . 808  rows= 1  loops= 1 )
   ->  Seq Scan on detail  (cost= 0 . 00 .. 8 . 13  rows= 141  width= 17 ) (actual time= 0 . 048 .. 1 . 488  rows= 207  loops= 1 )
         Filter: (((username)::text = 'Satana'::text) AND ("time" > to_date('2007-08-06'::text, 'yyyy-mm-dd'::text)) AND ("time" < (to_date('2007-08-06'::text,
'yyyy-mm-dd'::text) + '1 day'::interval)))
 Total runtime:  1 . 962  ms
( 4  rows)
...
Рейтинг: 0 / 0
Помогите правиль создать индекс.
    #34708524
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"idx_detail_usertime" btree ("time", username)
- или поменяйте порядок полей в этом индексе (если нет других запросов, требующих именно такого), или создайте еще один индекс с обратным порядком полей.

ЗЫ. индекс по лидирующим в другом индексе группе полей можете (в общем случае, если нет никаких доп. соображений) не создавать - оптимайзер вообще говоря должен уметь пользовать составной в кач-ве индекса по любой лидирующей подвыборке полей
т.е. если есть индекс (time,username),то индек на голый time (по крайней мере - для простых запросов) не столь уж необходим.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите правиль создать индекс.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]