Re: [HACKERS] OR with multi-key indexes

Поиск
Список
Период
Сортировка
От Vadim Mikheev
Тема Re: [HACKERS] OR with multi-key indexes
Дата
Msg-id 35C33D7E.EA37C587@krs.ru
обсуждение исходный текст
Ответ на Re: [HACKERS] OR with multi-key indexes  (Bruce Momjian <maillist@candle.pha.pa.us>)
Ответы Re: [HACKERS] OR with multi-key indexes
Re: [HACKERS] OR with multi-key indexes
Список pgsql-hackers
Bruce Momjian wrote:
>
>         create table test (x int4, y int4);
>         create index i_test on test(x,y);
>         insert into test values(1,2);
>         select * from test where x=3 and (y=1 or y=2);
>
> This is going to use the i_test index, but only with key x=3, and do a
> scan of the index looking for y=1 or y=2, and will not use the second
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Server will fetch heap tuple for each tuple with x = 3
returned by index access methods and call ExecQual...

> key of the index.

There are two ways.

I. Rewrite this into

(x = 3 and y = 1) or (x = 3 and y = 2)

and scan index twice using both keys for finding index tuples.

II. Extend multi-key indexing: (y = 1 or y = 2) could be
qualified by index access methods itself because of Y is
one of index keys. Only first key would be used for finding
index tuples but additional qualification could decrease
number of heap_fetch calls and this would be nice!

This feature would be also usefull for:

create index on table (a,b,c);
select * from table where a = 1 and c = 2;
                                    ^^^^^
    additional qualification would be performed on index level

Personally, I would like to see II implemented first because
of it works for both query examples.

Vadim

В списке pgsql-hackers по дате отправления:

Предыдущее
От: The Hermit Hacker
Дата:
Сообщение: Re: [HACKERS] Problem with CVS access to current sources
Следующее
От: Peter T Mount
Дата:
Сообщение: Re: [HACKERS] User authentication bug?