Je conçois un ensemble d'applications Web pour suivre les données de laboratoire scientifique. Chaque laboratoire a plusieurs membres, chacun accédant à la fois à ses propres données et à celles de son laboratoire dans son ensemble. De nombreuses requêtes typiques seront donc attendues pour renvoyer des enregistrements de plusieurs membres (par exemple ma souris, la souris de Joe et la souris de Sally).Application Web commerciale - conception de base de données évolutive
Je pense avoir la base de données assez bien normalisée. Je me demande maintenant comment faire en sorte que les utilisateurs puissent accéder efficacement à leurs propres données et à l'ensemble de données de leur laboratoire lorsqu'il est mélangé (espérons-le) à une tonne d'enregistrements provenant d'autres laboratoires.
Ce que j'ai trouvé jusqu'à présent, c'est que la plupart des tables se terminent par deux champs: user_id et labgroup_id. La clause WHERE d'une instruction SELECT inclura la référence appropriée à l'un des champs id ("... WHERE 'labroup_id = n ..." ou "... WHERE id_utilisateur = n ...").
Mes questions sont les suivantes:
Est-ce une approche qui échelle 10^6 ou plus de disques?
Si oui, quelle est la meilleure façon d'utiliser ces champs dans une requête afin de rechercher le sous-ensemble de la base de données le plus efficacement possible? par exemple. La première étape de l'interrogation doit-elle être de créer une table temporaire contenant uniquement les données du laboratoire? Ou l'indexation utilisant une combinaison des champs id, user_id et labroup_id sera-t-elle suffisante à cette échelle?
Je remercie tous les intervenants très à l'avance.
mysql a déjà intégré un optimiseur de requête. Vous travaillez également avec des pkeys (index), cela ne devrait donc pas poser de problème. – Ben
@Ben: contrairement à e.g. MS SQL, MySQL ne proposera pas d'indices que vous devriez créer pour améliorer les performances. Il est important de comprendre comment MySQL fonctionne avec la clé primaire et avec les index, et de comprendre comment utiliser les outils de mesure de performance disponibles, pour garantir des performances élevées. –