Re: Unable to use index?

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Unable to use index?
Дата
Msg-id 18132.1083282061@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Unable to use index?  (Manfred Koizar <mkoi-pg@aon.at>)
Ответы Re: Unable to use index?  (Edmund Dengler <edmundd@eSentire.com>)
Re: Unable to use index?  (Greg Stark <gsstark@mit.edu>)
Список pgsql-general
Manfred Koizar <mkoi-pg@aon.at> writes:
> The planner thinks that the seq scan has a startup cost of 0.00, i.e.
> that it can return the first tuple immediately, which is obviously not
> true in the presence of a filter condition.

Not really --- the startup cost is really defined as "cost expended
before we can start scanning for results".  The estimated cost to select
N tuples is actually "startup_cost + N*(total_cost-startup_cost)/M",
where M is the estimated total rows returned.  This is why the LIMIT
shows a nonzero estimate for the cost to fetch 1 row.

> Unfortunately there's no
> easy way to fix this, because the statistics information does not have
> information about the physical position of tuples with certain vaules.

Yeah, I think the real problem is that the desired rows are not
uniformly distributed, and in fact there are none near the start of the
table.  We do not keep stats detailed enough to let the planner discover
this, so it has to estimate on the assumption of uniform distribution.
On that assumption, it looks like a seqscan will hit a suitable tuple
quickly enough to be faster than using the index.

            regards, tom lane

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Timestamp problems...wrong weeks.
Следующее
От: Edmund Dengler
Дата:
Сообщение: Re: Unable to use index?