Re: [planner] Ignore "order by" in subselect if parrent do count(*)

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: [planner] Ignore "order by" in subselect if parrent do count(*)
Дата
Msg-id 14667.1330624202@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: [planner] Ignore "order by" in subselect if parrent do count(*)  ("Kevin Grittner" <Kevin.Grittner@wicourts.gov>)
Ответы Re: [planner] Ignore "order by" in subselect if parrent do count(*)  (Craig James <cjames@emolecules.com>)
Список pgsql-performance
"Kevin Grittner" <Kevin.Grittner@wicourts.gov> writes:
> Marcin Miros*aw<marcin@mejor.pl> wrote:
>> SELECT count(*)
>> from (select * from users_profile order by id) u_p;

>> "order by id" can be ignored by planner.

> This has been discussed before.  Certainly not all ORDER BY clauses
> within query steps can be ignored, so there would need to be code to
> determine whether it was actually useful, which wouldn't be free,
> either in terms of planning time or code maintenance.  It wasn't
> judged to be worth the cost.  If you want to avoid the cost of the
> sort, don't specify ORDER BY where it doesn't matter.

Considering that ORDER BY in a subquery isn't even legal per spec,
there does not seem to be any tenable argument for supposing that
a user wrote it there "by accident".  It's much more likely that
he had some semantic reason for it (say, an order-sensitive function
in a higher query level) and that we'd break his results by ignoring
the ORDER BY.  I doubt that very many of the possible reasons for
needing ordered output are reliably detectable by the planner, either.

            regards, tom lane

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

Предыдущее
От: Dave Crooke
Дата:
Сообщение: Re: PG as in-memory db? How to warm up and re-populate buffers? How to read in all tuples into memory?
Следующее
От: Ants Aasma
Дата:
Сообщение: Re: Bad estimation for "where field not in"