Bonjour tout le monde,
mes collègues et moi sommes en train de concevoir une application, plus précisément l'architecture de la base de données :
- beaucoup d'entrées (40 tables principales qui gravitent autour de 2 tables à 4 millions d'entrées au début)
- accès en lecture doit être très rapide
- accès en écriture doit être très rapide
- multi-sgbd (avec priorité à Oracle 11g)
- beaucoup d'accès concurentiels
- nombre d'users relativement conséquent (300 simultanés)
Notre question porte sur les tables intermédiaires:
- par expérience, une jointure ralentit une requête. Connaissez-vous les critères / volumes qui font qu'une jointure peut ralentir une requête ? On connaît les stats, index et différentes optimisations de BDD.
- Vaut-il mieux privilégier les tables intermédiaires ou démultiplier les colonnes ? (attention, la question ne porte pas sur le modèle théorique, car on a tous appris en cours qu'il vaut mieux des jointures. On a tous appris que la pratique est différente).
Exemple : une table doit contenir 10 références au maximum : vaut il mieux une table intermédiaire permettant d'avoir un nombre de références infini, ou stocker les 10 références dans la première table dans 10 colonnes, sachant que certaines ne seront pas toujours utilisées.- un index sur une chaine est-il aberrant ou faut il systématiquement créer une colonne numérique et l'indexer, quitte à devoir créer une table intermédiaire sur ce champ numérique ?
Exemple :
Table A
clé Char(3) indexée
ou faire plutôt
Table A
clé étrangère tableB.clé INT
Table B en jointure
clé primaire int
colonne CHAR(3)- Une requête sur 3 tables (relation 1,1) est-elle aussi rapide qu'une relation entre deux tables (1,1) ?
Je me répète, mais notre seul souci est la performance, nous préférons a priori dénormaliser au maximum (tout en gardant des tables maintenables).
Nous ne prévoyons pas d'attaquer directement nos tables en lecture, mais comptons privilégier les vues.
Bref, avec-vous des expériences de projets à gros volumes dans lesquels l'utilisation de tables intermédiaire vous a causé des problèmes de ralentissement ?
Merci d'avance !
Partager