Re: Tables archivées

From: Jean-Paul ARGUDO <jean-paul(at)argudo(dot)org>
To: Stéphane Dupuy <sdupuy(at)hducros(dot)fr>
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: Tables archivées
Date: 2005-01-04 11:14:38
Message-ID: 200501041214.39416.jean-paul@argudo.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

> j'ai une table "expéditions" qui grossit de jour en jour et que je
> souhaiterais "archiver", chaque année, pour limiter la taille de la base en
> conservant, par exemple, tous les index sur l'année courante et l'année
> passée, et n'avoir qu'un seul index de recherche sur les années
> antérieures. J'aurais ainsi des tables "exped2005", "exped2004",
> "exped2003"...

Solution basée sur une vue (il doit y en avoir des plus futées, pas trop le
temps de chercher):

Créer une table par an:

create table exped2003 as
select *
from expeditions
where expedition_date between to_date('01/01/2003','DD/MM/YYYY')
and to_date('31/12/2003','DD/MM/YYYY');

optionnel : create index (qui va bien sur la table ci-dessus...);

idem pour années suivantes: s/2003/2004/g ...

Créer une vue pour une sélection sur toutes les tables:

create vue expeditions_toutes
as
select * from exped2003
union
select * from exped2004
union
...;

Requêter sur la vue expeditions_toutes qui aggrège par un UNION les données de
doutes les tables. (cf UNION ALL si doublons possibles et qu'on veut les
garder)

--
Jean-Paul Argudo

In response to

Browse pgsql-fr-generale by date

  From Date Subject
Next Message philippe L 2005-01-04 11:44:16 Re: Bonne Année 2005!
Previous Message Stéphane Dupuy 2005-01-04 08:33:37 Tables archivées