Re: Getting row with id=max(id)

Поиск
Список
Период
Сортировка
От Gerald Gutierrez
Тема Re: Getting row with id=max(id)
Дата
Msg-id 5.1.0.14.0.20010607120835.02bbbd60@coldresist.com
обсуждение исходный текст
Ответ на Re: Getting row with id=max(id)  (Peter Eisentraut <peter_e@gmx.net>)
Ответы Re: Getting row with id=max(id)  (Gerald Gutierrez <gml1@coldresist.com>)
Re: Getting row with id=max(id)  (Alex Pilosov <alex@pilosoft.com>)
Список 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 по дате отправления:

Предыдущее
От: Gerald Gutierrez
Дата:
Сообщение: Re: Are SQL commands "atomic" ?
Следующее
От: Gerald Gutierrez
Дата:
Сообщение: Re: Getting row with id=max(id)