Re: [HACKERS] What about LIMIT in SELECT ?

Поиск
Список
Период
Сортировка
От jwieck@debis.com (Jan Wieck)
Тема Re: [HACKERS] What about LIMIT in SELECT ?
Дата
Msg-id m0zVY2c-000EBPC@orion.SAPserv.Hamburg.dsh.de
обсуждение исходный текст
Ответ на RE: [HACKERS] What about LIMIT in SELECT ?  ("Hiroshi Inoue" <Inoue@tpf.co.jp>)
Ответы Re: [HACKERS] What about LIMIT in SELECT ?
Список pgsql-hackers
Hiroshi Inoue wrote:

> >   * Prevent psort() usage when query already using index matching ORDER BY
> >
> >
>
> I can't find the reference to descending order cases except my posting.
> If  we use an index scan to remove sorts in those cases,backward positioning
> and scanning are necessary.

    I  think  it's  only thought as a reminder that the optimizer
    needs some optimization.

    That topic, and the LIMIT stuff too I think, is past 6.4 work
    and  may  go into a 6.4.1 performance release. So when we are
    after 6.4, we have enough time to work out a  real  solution,
    instead of just throwing in a patch as a quick shot.

    What  we  two did where steps in the same direction. Your one
    covers more situations, but after all if multiple people have
    the  same  idea  there  is a good chance that it is the right
    thing to do.

>
> Let t be a table with 2 indices, index1(key1,key2), index2(key1,key3).
> i.e. key1 is common to index1 and index2.
>
> And for the query
>   select * from t where key1>....;
>
> If   PosgreSQL optimizer choose [ index scan on index1 ] we can't remove
> sorts from the following query.
>    select * from t where key1>... order by key1,key3;
>
> Similarly if  [ index scan on index2 ] are chosen  we can't remove sorts
> from the following query.
>    select * from t where key1>... order by key1,key2;
>
> But in both cases (clever) optimizer can choose another index for scan.

    Right. As I remember, your solution does basically  the  same
    as  my  one. It does not change the optimizers decision about
    the index or if an index at all is used.  So  I  assume  they
    hook  into  the same position where depending on the order by
    clause the sort node is added. And that is at the very end of
    the optimizer.

    What  you  describe above requires changes in upper levels of
    optimization.  Doing that is far away from my knowledge about
    the  optimizer.   And  some of your earlier statements let me
    think you aren't familiar enough with  it  too.  We  need  at
    least help from others to do it well.

    I  don't want to dive that deep into the optimizer. There was
    a far too long time where the rule system was broken and  got
    out  of  sync with the parser/optimizer capabilities. I fixed
    many things in it for 6.4. My first priority now is,  not  to
    let such a situation come up again.


Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#======================================== jwieck@debis.com (Jan Wieck) #

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

Предыдущее
От: "Hiroshi Inoue"
Дата:
Сообщение: RE: [HACKERS] What about LIMIT in SELECT ?
Следующее
От: "Jose' Soares"
Дата:
Сообщение: Re: [HACKERS] using indexes