Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-fr-generale by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group