J'ai ancien serveur et base de données énorme de MySQL de marques étudiants Il n'y a qu'une seule table commune pour tous les élèves:va normalisation de la base de données de l'école mieux perfomance
student_id | teacher_id | marque | commentaires
Il y a six écoles dans ce projet et ~ 800 étudiants, tous les jours que nous avons ~ 5000 des marques
Les élèves ont un problème perfomance - toutes les requêtes de leurs marques prend environ deux minutes pour obtenir des résultats par la façon dont j'utiliser l'indexation de la table
J'ai la question - si j'utilise la normalisation et faire table distincte pour chaque élève comme ceci:
STUDENTS_TABLE
student_id | table
ivanov | ivanov_table
IVANOV_TABLE
teacher_id | mark | comment
il va aider me faire mieux perfomance?
Je n'ai aucune opportunité d'acheter un nouveau serveur.
AJOUTER: lorsque j'utilise mysql> SELECT * FROM all_students_table where student_id=001
cela prend beaucoup de temps. Je pense que c'est à cause de l'information de tous les étudiants dans une grande table. Et je suppose que si une table individuelle pour chaque étudiant sera créée - cela prendra moins de temps pour une requête comme celle-ci: mysql> SELECT * FROM student_001_table
. Ai-je raison?
ADD: Ce tableau est trois ans et mysql> SELECT COUNT(*) FROM students_marks
résultat donner 2 453 389 de lignes et il pousse tous les jours
Vous aurez besoin de réduire cela à un particulier requête et une description plus spécifique du problème. – tadman
Je suis d'accord avec @tadman, il suffit de mentionner que les données den-normalisées fonctionnent mieux pour les applications de reporting par exemple –
Faire une table séparée pour chaque élève ne se normalise pas. En fonction de ce que vous nous avez montré, un champ de date peut vous aider à filtrer. –