Skip site navigation (1) Skip section navigation (2)

Re: Clustered/covering indexes (or lack thereof :-)

From: Jeff Davis <pgsql(at)j-davis(dot)com>
To: adrobj <adrobj(at)yahoo(dot)com>
Cc: pgsql-performance(at)postgresql(dot)org
Subject: Re: Clustered/covering indexes (or lack thereof :-)
Date: 2007-11-16 19:34:36
Message-ID: 1195241676.22428.218.camel@dogma.ljc.laika.com (view raw or flat)
Thread:
Lists: pgsql-performance
On Sun, 2007-11-11 at 22:59 -0800, adrobj wrote:
> This is probably a FAQ, but I can't find a good answer...
> 
> So - are there common techniques to compensate for the lack of
> clustered/covering indexes in PostgreSQL? To be more specific - here is my
> table (simplified):
> 
> topic_id int
> post_id int
> post_text varchar(1024)
> 
> The most used query is: SELECT post_id, post_text FROM Posts WHERE
> topic_id=XXX. Normally I would have created a clustered index on topic_id,
> and the whole query would take ~1 disk seek.
> 
> What would be the common way to handle this in PostgreSQL, provided that I
> can't afford 1 disk seek per record returned?
> 

Periodically CLUSTER the table on the topic_id index. The table will not
be perfectly clustered at all times, but it will be close enough that it
won't make much difference.

There's still the hit of performing a CLUSTER, however.

Another option, if you have a relatively small number of topic_ids, is
to break it into separate tables, one for each topic_id.

Regards,
	Jeff Davis


In response to

Responses

pgsql-performance by date

Next:From: Bill MoranDate: 2007-11-16 19:51:35
Subject: Re: Clustered/covering indexes (or lack thereof :-)
Previous:From: Heikki LinnakangasDate: 2007-11-16 19:33:07
Subject: Re: Clustered/covering indexes (or lack thereof :-)

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group