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)
Re: Getting row with id=max(id) |
Список | 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 по дате отправления: