Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Bitmap Index / 4 сообщений из 4, страница 1 из 1
23.07.2006, 20:20
    #33872519
reuvenab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bitmap Index
здраствуйте

вот что мне Postgres выдал:

\d pkeyword
Table "public.pkeyword"
Column | Type | Modifiers
-----------------+---------+-----------------------------------------------------------------------
pkey | bigint | not null default nextval(('pkeyword_pkey_seq'::text)::regclass) keywordtype | integer |
keywordid | integer |
id | integer |

Indexes:
"pkeyword_pkey" PRIMARY KEY, btree (pkey)
"pkeyword_real_pkey" UNIQUE, btree (keywordtype, keywordid, id)
"pkeyword_by_keyword" btree (keywordtype, keywordid)
"pkeyword_by_keywordtype" btree (keywordtype)
"pkeyword_by_id" btree (id)


set enable_bitmapscan to on


Код: plaintext
explain  select keywordid from pkeyword where id= 801865  and keywordtype= 72 ;
QUERY PLAN
----------------------------------------------------------------------------------------------------------
Bitmap Heap Scan on pkeyword (cost=3890.97..3970.87 rows=20 width=4)
Recheck Cond: ((id = 801865) AND (keywordtype = 72))
-> BitmapAnd (cost=3890.97..3890.97 rows=20 width=0)
-> Bitmap Index Scan on pkeyword_by_id (cost=0.00..13.01 rows=2002 width=0)
Index Cond: (id = 801865)
-> Bitmap Index Scan on pkeyword_by_keywordtype (cost=0.00..3877.71 rows=681345 width=0)
Index Cond: (keywordtype = 72)

set enable_bitmapscan to off

Код: plaintext
1.
explain select keywordid from pkeyword where id= 801865  and keywordtype= 72 ;
QUERY PLAN
---------------------------------------------------------------------------------------------------
Index Scan using proteinkeyword_real_pkey on proteinkeyword (cost=0.00..6776.88 rows=20 width=4) Index Cond: ((keywordtype = 72) AND (protid = 801865))

вот так вот..
как объяснить?
...
Рейтинг: 0 / 0
24.07.2006, 09:50
    #33872898
Funny_Falcon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bitmap Index
Что именно? То что PostgreSQL 8.1 умеет строить runtime bitmap карты используя имеющиеся индексы?
Конечено не всегда это дает ускорение, но в 80% случаев - точно дает.
...
Рейтинг: 0 / 0
24.07.2006, 11:36
    #33873207
reuvenab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bitmap Index
Funny_FalconЧто именно? То что PostgreSQL 8.1 умеет строить runtime bitmap карты используя имеющиеся индексы?
Конечено не всегда это дает ускорение, но в 80% случаев - точно дает.

да после upgrade Postgres стал работать на порядок медленнее на запросе
поэтоиу интересно знать почему он выбрал именно этот план выполнения?
...
Рейтинг: 0 / 0
25.07.2006, 17:02
    #33877561
Funny_Falcon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bitmap Index
Потому что создатели решили, что bitmap будет быстрее. Они не совсем правы, но ...
Кстати - второй вариант запроса тоже не возможен в <=8.0 - ибо между keywordtype и id в индексе есть поле keywordid, а использовать такие индексы только 8.1 может.

Создай индекс pkeyword_by_keywordtype_id (keywordtype, id), если этот запрос очень нужен. Или поменяй порядок в pkeyword_real_pkey на (keywordtype, id, keywordid) :-)

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


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