Re: select max(id) from aTable is very slow

From: Nick Barr <nicky(at)chuckie(dot)co(dot)uk>
To: Nick Barr <nicky(at)chuckie(dot)co(dot)uk>
Cc: David Teran <david(dot)teran(at)cluster9(dot)com>, PgSQL Performance ML <pgsql-performance(at)postgresql(dot)org>
Subject: Re: select max(id) from aTable is very slow
Date: 2004-02-16 18:02:10
Message-ID: 403105A2.9040907@chuckie.co.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

Nick Barr wrote:

> David Teran wrote:
>
>> Hi,
>>
>> we have a table with about 6.000.000 rows. There is an index on a
>> column with the name id which is an integer and serves as primary key.
>>
>> When we execute select max(id) from theTable; it takes about 10
>> seconds. Explain analyze returns:
>>
>> ------------------------------------------------------------------------
>> --------------------------------------------------------
>> Aggregate (cost=153635.15..153635.15 rows=1 width=4) (actual
>> time=9738.263..9738.264 rows=1 loops=1)
>> -> Seq Scan on job_property (cost=0.00..137667.32 rows=6387132
>> width=4) (actual time=0.102..7303.649 rows=6387132 loops=1)
>> Total runtime: 9738.362 ms
>> (3 rows)
>>
>>
>>
>> I recreated the index on column id and ran vacuum analyze
>> job_property but this did not help. I tried to force index usage
>> with SET ENABLE_SEQSCAN TO OFF; but the explain analyze still looks
>> like the query is done using a seqscan.
>>
>> Is the speed more or less normal for a 'dual G5 with 2 GHZ and 4 GB
>> of Ram and a SATA hd' or do i miss something?
>>
>> regards David
>>
>>
>> ---------------------------(end of broadcast)---------------------------
>> TIP 3: if posting/reading through Usenet, please send an appropriate
>> subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
>> message can get through to the mailing list cleanly
>
>
> Try using:
>
> SELECT id FROM theTable ORDER BY is DESC LIMIT 1;
>
> Using COUNT, MAX, MIN and any aggregate function on the table of that
> size will always result in a sequential scan. There is currently no
> way around it although there are a few work arounds. See the following
> for more information.
>
> http://archives.postgresql.org/pgsql-performance/2004-01/msg00045.php
> http://archives.postgresql.org/pgsql-performance/2004-01/msg00054.php
> http://archives.postgresql.org/pgsql-performance/2004-01/msg00059.php
>
> HTH
>
> Nick
>
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster

Oops that should be

SELECT id FROM theTable ORDER BY id DESC LIMIT 1;

Nick

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message David Teran 2004-02-16 18:15:16 Re: select max(id) from aTable is very slow
Previous Message Nick Barr 2004-02-16 17:56:44 Re: select max(id) from aTable is very slow