Re: Need advice to avoid ORDER BY

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Need advice to avoid ORDER BY
Дата
Msg-id 13041.1365113714@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Need advice to avoid ORDER BY  (Merlin Moncure <mmoncure@gmail.com>)
Ответы Re: Need advice to avoid ORDER BY
Список pgsql-general
Merlin Moncure <mmoncure@gmail.com> writes:
> problem is that you are looking for needles (valids = 0) in the
> haystack.   the problem wasn't really the order, but the fact that you
> had to scan an arbitrary amount of rows before finding a candidate
> record.  so the partial index manages this problem by creating index
> entries *only for records that match a criteria*, and the planner
> recognizes this and prefers that index when the criteria is also
> present in the query.  In other words, index only the needles.

The other way to fix it is a two-column index on (valids, id), which
will be more useful if sometimes you need the minimum/maximum id
for some nonzero value of valids.

The real point here is that you want the index to contain consecutive
entries for the rows with the particular valids value you want, *in
order by id*.  Then the planner knows the first/last such index entry
contains the answer.  When you index only valids, it has to collect all
the matching rows and sort them by id.

            regards, tom lane


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

Предыдущее
От: John R Pierce
Дата:
Сообщение: Re: Need advice to avoid ORDER BY
Следующее
От: Merlin Moncure
Дата:
Сообщение: Re: Need advice to avoid ORDER BY