Re: slow IN() clause for many cases

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: slow IN() clause for many cases
Дата
Msg-id 12531.1129523680@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: slow IN() clause for many cases  (Greg Stark <gsstark@mit.edu>)
Список pgsql-hackers
Greg Stark <gsstark@mit.edu> writes:
> Martijn van Oosterhout <kleptog@svana.org> writes:
>> It's called LIMIT and has been supported for a long time.

> And if I *don't* want to limit the number of rows I retriev?

You still need to do something proactive to inform the system that you
want a fast-start plan.  What's more, you really really do not want to
give it an unlimited license to prefer zero-start-cost plans, else you
might still be waiting for the third row when hell freezes over.

In the current system structure, the only very reasonable way to set up
incremental client processing of a query result is to use a cursor and
FETCH a few rows at a time from it.  The planner already has a hack to
give some preference to fast-start plans when planning DECLARE CURSOR.
My recollection is that it optimizes on the assumption that 10% of the
rows will be retrieved, which gives some balance between start speed and
not blowing out the total runtime unreasonably.  We've already had some
discussion about exposing that 10% figure as a GUC variable, so that you
could put a finger on the scale depending on how much of the result you
expected to fetch.  But nobody got excited enough to make it happen...
        regards, tom lane


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: libpq's pollution of application namespace
Следующее
От: Gaetano Mendola
Дата:
Сообщение: Missing files on Postgres8.0.4 Win32 Installation