pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Richard Huxton <dev@archonet.com>
To: Tobias Brox <tobias@nordicbet.com>
Cc: Peter Childs <peterachilds@gmail.com>
Cc: pgsql-performance@postgresql.org
Subject: Re: Planner statistics, correlations
Date: Fri, 12 Jan 2007 09:17:48 +0000
Message-ID: <45A7523C.3000007@archonet.com> (raw)
In-Reply-To: <20070112090500.GB16243@oppetid.no>
References: <20070112081631.GA10636@oppetid.no>
	<a2de01dd0701120056p37f1906excd71068468e5769a@mail.gmail.com>
	<20070112090500.GB16243@oppetid.no>

Tobias Brox wrote:
> [Peter Childs - Fri at 08:56:54AM +0000]
>> Can you say what state might be rather than what it is not. I'm guess
>> that state is an int but there is only a limited list of possible
>> states, if you can say what it might be rather than what it is the
>> index is more liklly to be used.
> 
>   explain select * from events where state in (1,2,3) and event_time<now()
> 
> also estimates almost 5k of rows.  

Try a partial index:
CREATE INDEX my_new_index ON events (event_time)
WHERE state in (1,2,3);

Now, if that doesn't work you might want to split the query into two...

SELECT * FROM events
WHERE state IN (1,2,3) AND event_time < '2007-01-01'::date
UNION ALL
SELECT * FROM events
WHERE state IN (1,2,3) AND event_time >= '2007-01-01'::date AND 
event_time < now();

CREATE INDEX my_new_index ON events (event_time)
WHERE state in (1,2,3) AND event_time < '2007-01-01'::date;

CREATE INDEX event_time_state_idx ON events (event_time, state);

You'll want to replace the index/update the query once a year/month etc.

-- 
   Richard Huxton
   Archonet Ltd



view thread (8+ messages)  latest in thread

Message-ID: <45A7523C.3000007@archonet.com>
Permalink:  ../45A7523C.3000007@archonet.com/
Also on:    postgresql.org/message-id/45A7523C.3000007@archonet.com

 · 

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: dev@archonet.com, tobias@nordicbet.com, peterachilds@gmail.com
  Subject: Re: Planner statistics, correlations
  In-Reply-To: <45A7523C.3000007@archonet.com>

* 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