Utiliser plusieurs tables plutot qu'une ou inverse ?

Utiliser plusieurs tables plutot qu'une ou inverse ? - SQL/NoSQL - Programmation

Marsh Posté le 07-05-2007 à 18:00:13    

Bonjour,
 
J'ai une base de données déjà existante qui contient 2 tables qui ont exactement le même nombre de champs, les mêmes types et noms de champs, seul le nom des tables diffère (nom_table_2006, nom_table_2007).
 
La première table contient 24000 enregistrements, la seconde aucun mais je laisse imaginer qu'elle se remplira à l'avenir.
 
Je souhaiterais savoir s'il n'est pas plus judicieux de n'avoir qu'une seule et unique table, ou s'il est préférable de séparer par année afin de réduire l'importance des données.
Mon petit doigt me dit de ne garder qu'une seule table mais votre avis sera un plus dans ma vision des choses.
 
Je vous remercie.

Reply

Marsh Posté le 07-05-2007 à 18:00:13   

Reply

Marsh Posté le 07-05-2007 à 18:03:54    

ben ca dépend des requêtes que tu fais dessus aussi.
Si tu n'utilise courament que la table de l'année en cours, je dirais de garder une table, et tous les ans d'archiver cette table dans une grosse table d'historique.

Reply

Marsh Posté le 07-05-2007 à 21:40:41    

pour 24000 records je ne m'embeterai pas a cela, c'est rien du tout, si c'etait necessaire je regarderais plutot du cote du partitionning, mais il faudrait que tu precises le sgbd que tu utilises

Reply

Marsh Posté le 08-05-2007 à 11:05:57    

Oups! Mille excuses. J'utilise MySQL. Je comptais utiliser PostgreSQL mais Open Office Base connait pas ^^
 
Donc, si j'ai bien compris, il faut que je garde qu'une seule table?
 
Partitionning? C'est-à-dire? Décomposer la table?

Reply

Marsh Posté le 09-05-2007 à 14:11:40    

Le partitionning, c'est un peu comme un index organisé en cluster, sauf qu'en plus de trier physiquement les données selon un critère, il permet de les stocker physiquement à différents endroits, toujours selon ce critère.
 
Ainsi, les données sont effectivement séparées, et tu peux stocker les données de la table utilisées couramment sur un disque rapide mais de faible capacité, tandis que l'historique, volumineux mais peut utilisé, sera stocké sur un disque lent mais volumineux.
 
L'intérêt d'une partition (en terme SGBD) c'est qu'il permet de n'avoir qu'une seule table, mais bénéficier des avantages d'un découpage en sous-tables d'un point de vue performances.

Reply

Marsh Posté le 09-05-2007 à 15:48:48    

Merci pour l'explication. Si t'as de la documentation, je suis preneur. Mais, je vais quand même chercher de mon côté ;)

 

Merci encore.

 

EDIT : Pour ceux que ça intéresse, j'ai trouvé cette documentation bien détaillée: http://krierjon.developpez.com/mysql/partitionnement/


Message édité par AlphaZone le 09-05-2007 à 15:52:56
Reply

Marsh Posté le 09-05-2007 à 16:21:31    

J'ai un nouveau problème.

 

J'ai repris la table dans la documentation que j'ai trouvé et lorsque que je l'exécute, j'obtiens cette erreur :

Code :
  1. requête SQL:
  2. CREATE TABLE transac_part(
  3. id INT UNSIGNED NOT NULL ,
  4. montant INT UNSIGNED NOT NULL ,
  5. jour DATE NOT NULL ,
  6. codePays ENUM( 'FR', 'BE', 'UK', 'US', 'CA', 'JP' ) NOT NULL
  7. )PARTITION BY RANGE(
  8. YEAR( jour )
  9. )(
  10. PARTITION p1 VALUES LESS THAN( 1997 ) , PARTITION p2
  11. VALUES LESS THAN( 1998 ) , PARTITION p3
  12. VALUES LESS THAN( 1999 ) , PARTITION p4
  13. VALUES LESS THAN( 2000 ) , PARTITION p5
  14. VALUES LESS THAN( 2001 ) , PARTITION p6
  15. VALUES LESS THAN( 2002 ) , PARTITION p7
  16. VALUES LESS THAN( 2003 ) , PARTITION p8
  17. VALUES LESS THAN( 2004 ) , PARTITION p9
  18. VALUES LESS THAN( 2005 ) , PARTITION p10
  19. VALUES LESS THAN( 2006 ) , PARTITION p11
  20. VALUES LESS THAN MAXVALUE
  21. )
  22. MySQL a répondu:Documentation
  23. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'PARTITION BY RANGE(YEAR(jour))
  24. (
  25.    PARTITION p1 VALUES LESS THAN(1997),
  26.    P' at line 7
 

J'ai repris un exemple de la documentation officiel. Et rien à faire, c'est toujours la même erreur.

 

Quel est mon problème ? J'utilise MySQL 5.0.27-nt

  

EDIT : Arf! je me suis trompé. Le partitionnement n'est disponible qu'avec la future version 5.1. Va falloir prendre son mal en patience...


Message édité par AlphaZone le 09-05-2007 à 16:24:39
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed