Re: [HACKERS] What about LIMIT in SELECT ?

From: jwieck(at)debis(dot)com (Jan Wieck)
To: Inoue(at)tpf(dot)co(dot)jp (Hiroshi Inoue)
Cc: maillist(at)candle(dot)pha(dot)pa(dot)us, jwieck(at)debis(dot)com, hackers(at)postgreSQL(dot)org
Subject: Re: [HACKERS] What about LIMIT in SELECT ?
Date: 1998-10-20 09:25:22
Message-ID: m0zVY2c-000EBPC@orion.SAPserv.Hamburg.dsh.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-docs 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(at)debis(dot)com (Jan Wieck) #

In response to

Responses

Browse pgsql-docs by date

  From Date Subject
Next Message Bruce Momjian 1998-10-20 16:44:00 Re: [HACKERS] What about LIMIT in SELECT ?
Previous Message Hiroshi Inoue 1998-10-20 08:24:09 RE: [HACKERS] What about LIMIT in SELECT ?

Browse pgsql-hackers by date

  From Date Subject
Next Message Jose' Soares 1998-10-20 09:47:50 Re: [HACKERS] using indexes
Previous Message Hiroshi Inoue 1998-10-20 08:24:09 RE: [HACKERS] What about LIMIT in SELECT ?