Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Индекс не используется (не про like :) / 4 сообщений из 4, страница 1 из 1
16.06.2005, 20:00
    #33120487
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс не используется (не про like :)
Пишем:
Код: plaintext
1.
2.
3.
set enable_seqscan to off;
SELECT max(ep)  FROM mytable
WHERE (al_id= 20 )
Получаем:
Код: plaintext
1.
2.
3.
4.
Aggregate  (cost= 2959 . 03 .. 2959 . 03  rows= 1  width= 8 ) (actual time= 2078 . 000 .. 2078 . 000  rows= 1  loops= 1 )
  ->  Seq Scan on ma_data  (cost= 0 . 00 .. 2953 . 18  rows= 2339  width= 8 ) (actual time= 1922 . 000 .. 2078 . 000  rows= 3487  loops= 1 )
        Filter: (alias_id =  20 )
Total runtime:  2078 . 000  ms
При этом есть
Код: plaintext
1.
2.
CREATE INDEX "ma_data_e_p" ON "public"."mytable"
  USING btree ("al_id", "ep");
но судя по всему, он не используется.
А почему?
И вообще можно ли создать нужный мне индекс/заставить использовать существующий?
...
Рейтинг: 0 / 0
16.06.2005, 20:01
    #33120490
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс не используется (не про like :)
Получаем (естественно):
Код: plaintext
1.
2.
3.
4.
Aggregate  (cost= 2959 . 03 .. 2959 . 03  rows= 1  width= 8 ) (actual time= 2078 . 000 .. 2078 . 000  rows= 1  loops= 1 )
  ->  Seq Scan on mytable  (cost= 0 . 00 .. 2953 . 18  rows= 2339  width= 8 ) (actual time= 1922 . 000 .. 2078 . 000  rows= 3487  loops= 1 )
        Filter: (al_id =  20 )
Total runtime:  2078 . 000  ms
...
Рейтинг: 0 / 0
17.06.2005, 10:12
    #33121068
Кувалдин Роман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс не используется (не про like :)
Читал доку про аггрегатные функции постгреса? Нет...

Все агрегатные функции постгреса используют полное сканирование - в силу внутренних причин. Доставать минимальные и максимальные значения нужно при помощи:
max():
Код: plaintext
1.
SELECT ep FROM mytable order by ep desc limit  1 ;
min:
Код: plaintext
1.
SELECT ep FROM mytable order by ep limit  1 ;

Такие блины.
P.S. В версии 8.0.3 обещали забить гвоздями max и min как вышеприведенные запросы.
...
Рейтинг: 0 / 0
17.06.2005, 10:18
    #33121087
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс не используется (не про like :)
Кувалдин РоманЧитал доку про аггрегатные функции постгреса? Нет...

Читал. Судя по всему не помогло :)

Кувалдин Роман
Такие блины.
P.S. В версии 8.0.3 обещали забить гвоздями max и min как вышеприведенные запросы.

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


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