Re: btree index and max() - Mailing list pgsql-general

From leonbloy@sinectis.com.ar
Subject Re: btree index and max()
Date
Msg-id 200006012210.TAA10823@rye.sinectis.com.ar
Whole thread Raw
In response to btree index and max()  (leonbloy@sinectis.com.ar)
Responses Re: btree index and max()  (efinley@efinley.com (Elliot Finley))
List pgsql-general
>  leonbloy@sinectis.com.ar writes:
>  > I understand that the query planner cannot be so clever
>  > to grasp that this particular function (max or min)
>  > might be evaluated by just travelling the BTREE index.
>  > Am I correct?
>
>  You are correct --- the system has no idea that there is any
>  connection between the MIN and MAX aggregates and the sort order
>  of any particular index.  (In fact, the system knows nothing
>  about the specific semantics of any aggregate function; they're
>  all black boxes, which is a very good thing for most purposes.)
>

That's what I thought...

>  However, if you think of your problem as "how can I use the sort order
>  of this index to get the min/max?", a semi-obvious answer pops out:
>
>  SELECT foo FROM table ORDER BY foo LIMIT 1;        -- get the min
>  SELECT foo FROM table ORDER BY foo DESC LIMIT 1;    -- get the max
>
>  and the 7.0 optimizer does indeed know how to use an index to handle
>  these queries.
>

Good! That had not occurred to me.

Though one should :
1) be careful with NULL values (excluding them from the select)
2) understand that (of course!) these queries
are VERY inefficient to compute the max/min if
the btree index is not defined.

By the way, I didn't find many comments about the pros and
cons of btree/hash indexes in the docs, nor in Bruce's book...

Regards

Hernan Gonzalez
Buenos Aires, Argentina

pgsql-general by date:

Previous
From: Michael Meskes
Date:
Subject: Re: PostgreSQL article in LinuxWorld
Next
From: "Ross J. Reedstrom"
Date:
Subject: Re: Q: Truncated output