Re: strange query plan with LIMIT

Поиск
Список
Период
Сортировка
От tv@fuzzy.cz
Тема Re: strange query plan with LIMIT
Дата
Msg-id 22bab989ef6b6b073db4cecca0a19dd7.squirrel@sq.gransy.com
обсуждение исходный текст
Ответ на Re: strange query plan with LIMIT  (anthony.shipman@symstream.com)
Список pgsql-performance
> What seems odd to me is that the only difference between the two is the
> limit
> clause:
>
> select * from tdiag where (create_time >= '2011-06-03
> 09:49:04.000000+0' and create_time < '2011-06-06 09:59:04.000000+0') order
> by
> diag_id limit 1;
>
> select * from tdiag where (create_time >= '2011-06-03
> 09:49:04.000000+0' and create_time < '2011-06-06 09:59:04.000000+0') order
> by
> diag_id;
>
> and yet the plan completely changes.

As Claudio Freire already pointed out, this is expected behavior. With
LIMIT the planner prefers plans with low starting cost, as it expects to
end soon and building index bitmap / hash table would be a waste. So
actually it would be very odd if the plan did not change in this case ...

Anyway I have no idea how to fix this "clean" - without messing with
enable_* or cost variables or other such dirty tricks.

regards
Tomas


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

Предыдущее
От: Claudio Freire
Дата:
Сообщение: Re: strange query plan with LIMIT
Следующее
От: anthony.shipman@symstream.com
Дата:
Сообщение: Re: strange query plan with LIMIT