From: | "Mendola Gaetano" <mendola(at)bigfoot(dot)com> |
---|---|
To: | <pgsql-admin(at)postgresql(dot)org> |
Cc: | "Dani Oderbolz" <oderbolz(at)ecologic(dot)de> |
Subject: | Re: Partition DB Tables by month |
Date: | 2003-07-30 15:00:54 |
Message-ID: | 002401c356ab$6007b4e0$32add6c2@mm.eutelsat.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-admin |
"Dani Oderbolz" <oderbolz(at)ecologic(dot)de> wrote:
> Mendola Gaetano wrote:
>
> >you can easilly accomplish this using a partial index.
> >
> >
> Would that really work with a view?
> Can you post a syntax example for this?
CREATE TABLE foo (
field_a
field_b
......
fast_search BOOLEAN NOT NULL DEFAULT 1,
time_stamp TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX idx_fast_search ON foo ( fast_search ) where fast_search = 't';
for each field to index:
CREATE INDEX idx_field_a ON foo ( field_a ) where fast_search = 't';
CREATE INDEX idx_field_b ON foo ( field_b ) where fast_search = 't';
at the beginning of each month you can now do:
UPDATE foo SET fast_search = 'f'
WHERE time_stamp < now() AND
fast_search = 't';
Your improved query for the last month:
SELECT *
FROM foo
WHERE fast_search = 't' AND
<field_a> = XXXXX AND
<field_b> = YYYYYY;
I hope this help
Regards
Gaetano
From | Date | Subject | |
---|---|---|---|
Next Message | Dani Oderbolz | 2003-07-30 15:14:12 | Re: Replication/Failover/HA solution |
Previous Message | Tom Lane | 2003-07-30 14:54:39 | Re: Postgres db corrupted ? |