Re: Getting row with id=max(id) - Mailing list pgsql-sql

From Gerald Gutierrez
Subject Re: Getting row with id=max(id)
Date
Msg-id 5.1.0.14.0.20010607120835.02bbbd60@coldresist.com
Whole thread Raw
In response to Re: Getting row with id=max(id)  (Peter Eisentraut <peter_e@gmx.net>)
Responses Re: Getting row with id=max(id)
Re: Getting row with id=max(id)
List pgsql-sql
At 07:31 PM 6/7/2001 +0200, Peter Eisentraut wrote:
> > SELECT * FROM mytable WHERE id=(SELECT MAX(id) FROM mytable);
> > SELECT * FROM mytable ORDER BY id DESC LIMIT 1;
>The second is generally thought to be faster, at least if you use the
>latest version of PostgreSQL.

This is quite amusing actually. To get the maximum of a column, the (much 
more) convoluted way is much faster than the intuitive way:

=> explain select id from mytable order by seed desc limit 1;
NOTICE:  QUERY PLAN:
Index Scan Backward using mytable _pkey on mytable   (cost=0.00..794189.09 
rows=5358342 width=4)
EXPLAIN
=> explain select max(id) from mytable ;
NOTICE:  QUERY PLAN:
Aggregate  (cost=103152.27..103152.27 rows=1 width=4)  ->  Seq Scan on mytable (cost=0.00..89756.42 rows=5358342
width=4)
EXPLAIN

Perhaps if the server internally rewrote the second query into the first, 
it would make the intuitive version much faster. The same can be done for 
min() and perhaps other functions as well.






pgsql-sql by date:

Previous
From: Gerald Gutierrez
Date:
Subject: Re: Are SQL commands "atomic" ?
Next
From: Gerald Gutierrez
Date:
Subject: Re: Getting row with id=max(id)