Re: strange explain

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: strange explain
Дата
Msg-id 29086.1021298690@sss.pgh.pa.us
обсуждение исходный текст
Ответ на strange explain  (Oleg Bartunov <oleg@sai.msu.su>)
Ответы Re: strange explain  (Oleg Bartunov <oleg@sai.msu.su>)
Re: strange explain  (Oleg Bartunov <oleg@sai.msu.su>)
Список pgsql-hackers
Oleg Bartunov <oleg@sai.msu.su> writes:
> tour=# explain analyze  select * from tours  where
>              ( operator_id in (2,3,4,5,7) and type_id = 2 )  or
>              ( operator_id = 8 and type_id=4 );

> Index Scan using type_idx, type_idx, type_idx, type_idx, type_idx, type_idx on tours  (cost=0.00..12.25 rows=1
width=1091)(actual time=0.26..0.26 rows=0 loops=1)
 

> What does many 'type_idx' means ?

Multiple indexscans.

It looks to me like your WHERE clause is being flattened into
            ( operator_id = 2 and type_id=2 ) or            ( operator_id = 3 and type_id=2 ) or            (
operator_id= 4 and type_id=2 ) or            ( operator_id = 5 and type_id=2 ) or            ( operator_id = 7 and
type_id=2) or            ( operator_id = 8 and type_id=4 )
 

and then it has a choice of repeated indexscans on operator_id or
type_id.  Depending on the selectivity stats it might pick either.
You might find that a 2-column index on both would be a win.
        regards, tom lane


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

Предыдущее
От: Jason Tishler
Дата:
Сообщение: Re: Native Win32, How about this?
Следующее
От: "Rod Taylor"
Дата:
Сообщение: Re: Join of small table with large table