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 -
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
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
A voir également:
- Jointure externe pour champ optionnel
- Chkdsk disque dur externe - Guide
- Ram externe - Forum Carte-mère/mémoire
- Appel externe c'est quoi - Forum telephonie fixe
- Batterie externe clignote ne charge pas - Forum Mobile
- Le nom du champ de tableau croisé dynamique n'est pas valide - Forum Excel
2 réponses
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.
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.
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
Ç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