Jointure externe pour champ optionnel

Cupidme Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je travaille actuellement sur la refonte d'une bdd mysql.
Cette bdd est en faite une énorme table de 200 champs, plusieurs millions de lignes, quasiment aucun index... Bref, des performances calamiteuse et une conso de ram dantesque !
Je suis parvenu dans un premier temps à réduire le nombre de champ en mettant en place des relations 1:n.
Je me pose une question sur un point précis :
Un certain nombre de champs sur cette base sont optionnels et peu souvent renseignés. (parfois quasi jamais)
Quelle est la meilleure chose à faire dans ce cas :
- laisser le champ dans la table quitte à ce qu'il soit très souvent de valeur null
- mettre en place des relation n:n sachant que ces relations, si elles existent, ne renverront qu'une seule ligne
- ...ou une autre solution à laquelle je n'ai pas pensé

Par avance merci de vos conseils avisés ;)
Dimitri



Configuration: Windows / Chrome 73.0.3683.103

2 réponses

jee pee Messages postés 41547 Date d'inscription   Statut Modérateur Dernière intervention   9 722
 
Bonjour,

Pour moi c'est plus l'utilisation qui devrait primer.

Si dans 80% des cas les commandes sql exécutées ces champs interviennent, autant les laisser dans la table pour ne pas avoir à effectuer de jointure.

Si dans 80% des cas ces champs ne figurent pas dans les commandes sql exécutées, tu pourrais les déplacer dans une autre table. En réfléchissant en terme de MCD.
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Ça dépend si ces champs ont souvent besoin d'être lus ou non.
Si tu veux, pour des raisons de lisibilité humaine, réduire le nombre de champs dans la table principale, tu peux créer une deuxième table en relation 1:1 qui reprendra ces colonnes-là. Les requêtes seront un poil plus lente puisqu'une jointure supplémentaire sera nécessaire, mais si ces champs n'ont pas souvent besoin d'être lus ça allègera les requêtes qui n'en ont pas besoin.

Mais bon, en soi, laisser les champs à NULL ne pose pas vraiment de problème d'un point de vue purement technique.

Xavier
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
(Oui voilà, comme a dit jee pee qui m'a devancé)
0