Mysql
 sql >> Base de données >  >> RDS >> Mysql

Performances MySQL JOIN sur 1 grande table et plusieurs petites tables

Puisqu'il s'agit d'une relation "un à plusieurs", je les stockerais dans une table séparée. L'optimiseur de requête du serveur SQL (sous le capot) sera capable d'analyser les 250 enregistrements assez rapidement pour que cela ne soit pas un problème. De plus, en fonction de la longueur des valeurs dans la petite table, vous économiserez de l'espace de stockage en ne les stockant pas des centaines de millions de fois supplémentaires. Cependant, si les performances de reporting sont de la plus haute importance, vous pouvez choisir de les stocker dans une table "aplatie" - comme une structure d'entrepôt de données, sans les jointures. Ce sera certainement plus rapide, mais vous sacrifierez de l'espace de stockage et votre base de données relationnelle bien structurée.

Cela dit, j'opterais pour l'option 1. Mais vous devriez pouvoir stocker facilement les données dans une nouvelle table avec le format de l'option 2 - interroger les deux - puis évaluer les performances par vous-même. Je m'attends à ce que cela ne fasse pas beaucoup de différence, surtout compte tenu de la capacité de vos tables plus petites.