Re: Strange choice of general index over partial index

Поиск
Список
Период
Сортировка
От Mark Kirkwood
Тема Re: Strange choice of general index over partial index
Дата
Msg-id 54B85D32.7090106@catalyst.net.nz
обсуждение исходный текст
Ответ на Strange choice of general index over partial index  (Josh Berkus <josh@agliodbs.com>)
Ответы Re: Strange choice of general index over partial index
Список pgsql-performance
On 16/01/15 11:30, Josh Berkus wrote:
> This is an obfuscation and mock up, but:
>
> table files (
>     id serial pk,
>     filename text not null,
>     state varchar(20) not null
>     ... 18 more columns
> )
>
> index file_state on (state)
>     (35GB in size)
> index file_in_flight_state (state) where state in (
> 'waiting','assigning', 'processing' )
>     (600MB in size)
> ... 10 more indexes
>
> More important facts:
> * state = 'done' 95% of the time.  thereform the partial index
> represents only 5% of the table
> * all indexes and the table are very bloated
> * server has 128GB RAM
> * Version 9.2.
>
> Given this setup, I would expect the planner to *always* choose
> file_in_flight_state over file_state for this query:
>
> SELECT id, filename FROM files WHERE state = 'waiting';
>
> ... and yet it keeps selecting file_state based on extremely small
> changes to the stats.   This is important because the same query, using
> file_state, is 20X to 50X slower, because that index frequently gets
> pushed out of memory.
>
> What am I missing?  Or is this potentially a planner bug for costing?
>

Are you seeing a bitmapscan access plan? If so see if disabling it gets
you a plan on the files_in_flight index. I'm seeing this scenario with a
fake/generated dataset a bit like yours in 9.2 (9.5 uses the
files_in_flight w/o any coercing).

regards

Mark


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

Предыдущее
От: Jeff Janes
Дата:
Сообщение: Re: Strange choice of general index over partial index
Следующее
От: Ivan Schneider
Дата:
Сообщение: Autocompletion with full text search