Bonjour,
je viens vers vous pour avoir des avis en terme de performance sur une base relative complexe et surtout très fournis.
Voici comment s'articule la base:
Une base articles avec environ 60 champs.
Dans ces 60 champs il y a 21 champs qui font référence un id d'autres tables (exemple couleur, taille, variétés etc...)
Par exemple un article dans la table article aura dans le couleur 1 et taille 1 , ce qui correspond a la couleur rouge dans la table couleur et a la taille S pour la table taille.
Donc je me pose une question maintenant au moment de l'affichage en terme de performance s'il vaut mieux que je passe par de multiple jointure sur ma requête ou si je crées une vue avec toute les jointures sur les champs de faites et que je requête direct sur ma vue ???
Avec une table démo de 600 articles en faisant un bench entre les deux versions, je trouve que globalement la version jointure a la volée est plus lente mais traite moins de ligne (d'apres les infos de la fonction EXPLAIN) alors que la version en utilisant la vue est légèrement plus rapide mais analyse plus de lignes.
La différence de temps est d'environ 0.08sec sur mon bench ce qui va un peu a l'encontre de ce que je pensais car j'avais toujours dans l'idée que moins de ligne étaient traité et plus le résultat était rapide
Par contre le problème c'est que le test est sur 600 articles alors qu'a terme la base va comporter environ 45 millions d'articles (il s'agit d'une base encyclopédique dans un domaine très particulier qui comporte énormément de déclinaison différente d'un même articles d'où la taille énorme)
merci d'avance de vos avis et/ou questions si besoin d'infos complémentaires.
PS: ces résultat sont obtenus avec un bench fait en C puisqu'au final le programme sera en C avec déjà une optimisation maximale du code a la compilation pour la machine de test, l'accés se fait via le socket.
Partager