Re: Performance problems on a fairly big table with two key columns.

From: Richard Huxton <dev(at)archonet(dot)com>
To: rasmus(at)defero(dot)se, pgsql-performance(at)postgresql(dot)org
Subject: Re: Performance problems on a fairly big table with two key columns.
Date: 2003-09-05 08:34:52
Message-ID: 200309050934.52082.dev@archonet.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

On Thursday 04 September 2003 23:53, Rasmus Aveskogh wrote:
> Hi,
>
> I have a table that looks like this:
>
> DATA ID TIME
>
> |------|----|------|
>
> The table holds app. 14M rows now and grows by app. 350k rows a day.
>
> The ID-column holds about 1500 unique values (integer).
> The TIME-columns is of type timestamp without timezone.
>
> I have one index (b-tree) on the ID-column and one index (b-tree) on the
> time-column.
>
> My queries most often look like this:
>
> SELECT DATA FROM <tbl> WHERE ID = 1 AND TIME > now() - '1 day'::interval;
[snip]
> I tried applying a multicolumn index on ID and TIME, but that one won't
> even be used (after ANALYZE).

The problem is likely to be that the parser isn't spotting that now()-'1 day'
is constant. Try an explicit time and see if the index is used. If so, you
can write a wrapper function for your expression (mark it STABLE so the
planner knows it won't change during the statement).

Alternatively, you can do the calculation in the application and use an
explicit time.

HTH
--
Richard Huxton
Archonet Ltd

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Bjorn T Johansen 2003-09-05 08:47:54 Re: Seq scan of table?
Previous Message Bjorn T Johansen 2003-09-05 06:57:55 Re: Seq scan of table?