|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 65 ![]() |
Bonjour;
je suis amené à alimenter une table mais pour ce faire j'ai besoin de faire des jointures sur 7 ou 8 tables pour récupérer tous les champs dont j'ai besoin. et je sais qu'en termes d'optimisation ce n'est pas fameux surtout quand on a des tables volumineuses. y a-t-il une solution pour contourner ça ? merci d'avance. |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Développeur informatique Inscription : juillet 2002 Messages : 96 ![]() |
Bonjour,
Si tu veux éviter les jointures, tu peux intégrer les informations directement dans la table centrale, c'est pas forcément plus mieux. - Tu fais péter la volumétrie de ta base. - Tu as des informations en double de tous côtés. - Si tu dois modifier un attribut externe d'une liaison, plutôt que faire un update sur un enregistrement de la table étrangère tu vas peut être devoir faire cet update sur des milliers d'enregistrements. D'un autre coté, 8 tables ne me parait pas exagéré quand je vois certaines requêtes que j'ai été amené à écrire tout en gardant de très bonnes performances. Après, il est important de savoir comment travaille le SGBD sur lequel tu bosses. Ça devient un question d'optimisation. Il m'est arrivé de faire certaines requêtes qui mettaient plusieurs minutes à s'exécuter, puis à force d'optimisations tomber en dessous de la seconde. Je ne sais pas avec quel SGBD tu travailles, mais tu dois surement avoir des instructions d'analyse d'exécution de requête. Cordialement.
__________________
Je connais des gens qui ne sont pas aware, il ne sont pas qu courant. il ne sont pas a l'attention de savoir qu'ils existent. "J-C Van dam" |
|
|
00
|
|
|
#3 | |
![]() ![]() |
Il ne faut pas avoir peur des jointures, c'est l'opération la plus optimisée dans un SGBDR.
Du moment que la BDD est correctement modélisée, les types de colonnes judicieusement choisis et les tables correctement indexées, toute requête, même sur des millions de lignes, doit se faire en moins d'une seconde sur un serveur correctement dimensionné. Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 65 ![]() |
bonjour;
mon SGBD est SQLserver et le nombre de lignes dans les tables varie entre un million et 3 millions lignes. |
|
|
00
|
|
|
#5 |
![]() ![]() |
C'est pas mal mais pas extraordinaire.
SQL Server est tout à fait capable de soutenir cette charge. Reste le dimensionnement du matériel (ne pas être avare de mémoire vive), la modélisation de la BDD (normaliser au maximum avant de songer à toute dénormalisation), le choix des types de colonnes (clefs primaires et étrangères entières ou à la riguer en CHAR < 4 notamment), l'indexation des tables.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
Copyright © 2000-2012 - www.developpez.com