pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Tobias Brox <tobias@nordicbet.com>
To: pgsql-performance@postgresql.org
Subject: max/min and index usage
Date: Wed, 6 Dec 2006 04:01:56 +0100
Message-ID: <20061206030156.GA29255@oppetid.no> (raw)

We're using 8.1 - I thought such a construct was safe in pg 8.1:

 select max(indexed_value) from huge_table;

while earlier we had to use:

 select indexed_value from huge_table order by indexed_value desc limit 1;

seems like I was wrong:


mydb=> explain analyze select indexed_value1 from mytable order by indexed_value1 desc limit 1;
                                                                           QUERY PLAN                                                                            
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 Limit  (cost=0.00..1.96 rows=1 width=4) (actual time=0.115..0.117 rows=1 loops=1)
   ->  Index Scan Backward using index1 on mytable  (cost=0.00..23890756.52 rows=12164924 width=4) (actual time=0.111..0.111 rows=1 loops=1)
 Total runtime: 0.162 ms
(3 rows)

mydb=> explain analyze select indexed_value2 from mytable order by indexed_value2 desc limit 1;
                                                                         QUERY PLAN                                                                          
-------------------------------------------------------------------------------------------------------------------------------------------------------------
 Limit  (cost=0.00..0.04 rows=1 width=4) (actual time=0.128..0.130 rows=1 loops=1)
   ->  Index Scan Backward using index2 on mytable  (cost=0.00..428231.16 rows=12164924 width=4) (actual time=0.124..0.124 rows=1 loops=1)
 Total runtime: 0.160 ms
(3 rows)


mydb=> explain analyze select max(indexed_value2) from mytable; 
                                                                                 QUERY PLAN                                                                                  
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Result  (cost=0.04..0.05 rows=1 width=0) (actual time=11652.138..11652.139 rows=1 loops=1)
   InitPlan
     ->  Limit  (cost=0.00..0.04 rows=1 width=4) (actual time=11652.122..11652.124 rows=1 loops=1)
           ->  Index Scan Backward using index2 on mytable  (cost=0.00..428231.16 rows=12164924 width=4) (actual time=11652.117..11652.117 rows=1 loops=1)
                 Filter: (indexed_value2 IS NOT NULL)
 Total runtime: 11652.200 ms
(6 rows)

mydb=> explain analyze select max(indexed_value1) from mytable; 
                                                                                 QUERY PLAN                                                                                  
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Result  (cost=1.96..1.97 rows=1 width=0) (actual time=713.780..713.781 rows=1 loops=1)
   InitPlan
     ->  Limit  (cost=0.00..1.96 rows=1 width=4) (actual time=713.767..713.770 rows=1 loops=1)
           ->  Index Scan Backward using index1 on mytable  (cost=0.00..23890756.52 rows=12164924 width=4) (actual time=713.764..713.764 rows=1 loops=1)
                 Filter: (indexed_value1 IS NOT NULL)
 Total runtime: 713.861 ms
(6 rows)



view thread (4+ messages)  latest in thread

Message-ID: <20061206030156.GA29255@oppetid.no>
Permalink:  ../20061206030156.GA29255@oppetid.no/
Also on:    postgresql.org/message-id/20061206030156.GA29255@oppetid.no

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: tobias@nordicbet.com
  Subject: Re: max/min and index usage
  In-Reply-To: <20061206030156.GA29255@oppetid.no>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox