pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Bret Hughes <bhughes@elevating.com>
To: postgresql sql list <pgsql-sql@postgresql.org>
Subject: distinct values without seq scan
Date: 06 Apr 2004 12:06:34 -0500
Message-ID: <1081271194.18380.156.camel@bretsony> (raw)

I have a table indexed on a char(35) field and want a query to return a
distinct list of the values in this column.  Is there some syntactical
magic I can do to get these values without a sequential scan?  I assume,
( here we go again ) that these values are in the index somewhere and I
seem to recall a select DISTINCT using an index in DB2 way back when but
I may be mistaken.

Searching the archives I found an email that indicated this was possible
in 7.4 and infact is the reason I upgraded from 7.2x.

The table in question has about 700K rows and grows daily so seq scans
hurt more and more all the time.

Tips appreciated.

elevating=# \d logrecords
                                  Table "public.logrecords"
      Column      |     Type      |                        
Modifiers                         
------------------+---------------+-----------------------------------------------------------
 serial           | integer       | not null default
nextval('"logrecords_serial_seq"'::text)
 city             | smallint      | not null
 building         | smallint      | not null
 display          | integer       | not null
 advertiser       | character(35) | not null
 pagename         | character(65) | not null
 log_date         | date          | not null
 exhibition_count | integer       | not null
Indexes:
    "logrecords_pkey" primary key, btree (serial)
    "logrecords_advertiser" btree (advertiser)
    "logrecords_building" btree (building)
    "logrecords_city" btree (city)
    "logrecords_date" btree (log_date)
Triggers:
    "RI_ConstraintTrigger_1709151" AFTER INSERT OR UPDATE ON logrecords
FROM cities NOT DEFERRABLE INITIALLY IMMEDIATE FOR EACH ROW EXECUTE
PROCEDURE "RI_FKey_check_ins"('logrec_ref_cities', 'logrecords',
'cities', 'UNSPECIFIED', 'city', 'num')
    "RI_ConstraintTrigger_1709152" AFTER INSERT OR UPDATE ON logrecords
FROM buildings NOT DEFERRABLE INITIALLY IMMEDIATE FOR EACH ROW EXECUTE
PROCEDURE "RI_FKey_check_ins"('logrecords_ref_buildings', 'logrecords',
'buildings', 'UNSPECIFIED', 'building', 'num')
    "RI_ConstraintTrigger_1709153" AFTER INSERT OR UPDATE ON logrecords
FROM displays NOT DEFERRABLE INITIALLY IMMEDIATE FOR EACH ROW EXECUTE
PROCEDURE "RI_FKey_check_ins"('logrecords_ref_display', 'logrecords',
'displays', 'UNSPECIFIED', 'display', 'num')



elevating=# explain select distinct advertiser from logrecords;
                                   QUERY
PLAN                                   
--------------------------------------------------------------------------------
 Unique  (cost=136440.68..139858.43 rows=61 width=39)
   ->  Sort  (cost=136440.68..138149.55 rows=683550 width=39)
         Sort Key: advertiser
         ->  Seq Scan on logrecords  (cost=0.00..20785.50 rows=683550
width=39)
(4 rows)

Bret






view thread (2+ messages)  latest in thread

Message-ID: <1081271194.18380.156.camel@bretsony>
Permalink:  ../1081271194.18380.156.camel@bretsony/
Also on:    postgresql.org/message-id/1081271194.18380.156.camel@bretsony

 · 

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-sql@postgresql.org
  Cc: bhughes@elevating.com
  Subject: Re: distinct values without seq scan
  In-Reply-To: <1081271194.18380.156.camel@bretsony>

* 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