Re: Unexpected sequential scan on an indexed column

From: Dave Crooke <dcrooke(at)gmail(dot)com>
To: Eddy Escardo-Raffo <eescardo(at)kikini(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-performance <pgsql-performance(at)postgresql(dot)org>
Subject: Re: Unexpected sequential scan on an indexed column
Date: 2009-11-16 17:44:29
Message-ID: ca24673e0911160944s1fa729f1x75abefb4eaf09de@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

Hi Eddy

Perhaps a slightly naive suggestion .... have you considered
converting the query to a small stored procedure ('function' in
Postgres speak)? You can pull the location values, and then iterate
over a query like this:

select userid from users where location=:x

which is more-or-less guaranteed to use the index.

I had a somewhat similar situation recently, where I was passing in a
list of id's (from outwith Postgres) and it would on occasion avoid
the index in favour of a full table scan .... I changed this to
iterate over the id's with separate queries (in Java, but using a
function will achieve the same thing) and went from one 5 minute query
doing full table scan to a handful of queries doing sub-millisecond
direct index lookups.

Cheers
Dave

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Robert Haas 2009-11-16 18:09:33 Re: Is Diskeeper Automatic Mode safe?
Previous Message cb 2009-11-16 17:14:44 Is Diskeeper Automatic Mode safe?