Je développe un programme de suivi des étudiants où j'ai besoin de stocker 15 notes d'examen.
Je peux stocker les marques sous forme de chaîne et les diviser lorsque j'en ai besoin, à des fins telles que l'exécution d'opérations arithmétiques. Cependant, j'ai besoin d'autant de performances que possible.
Ce qui est mieux? Un champ de chaîne unique ou 15 champs int individuels?
Réponses:
Si vous parlez déjà de fractionnement et de calcul, ne le stockez pas sous forme de tableau.
Indépendamment de la théorie relationnelle et des règles et dogmes de normalisation traditionnels, c'est simplement une conception qui vous donne une flexibilité MINIMALE.
Faites chaque résultat d'examen une rangée.
Je n'essaie pas de tout prévoir, mais il y a un très grand nombre de choses que cette conception plus granulaire (et, oui, normalisée) et seulement un peu plus coûteuse en espace facilite dont vous pourriez ou non avoir besoin maintenant et peut ou peut-être pas besoin à l'avenir:
Jetant le résultat le plus élevé et le plus bas? Vous devrez découper votre tableau et le trier.
Moyennage? Vous devrez le découper et le totaliser
Analyse du résultat de l'examen par examen parmi les étudiants? Vous devrez couper et pivoter
Tri pour le comptage (ou par exemple GCSE britannique, où il pourrait être 7 As et 2B)? Vous devrez trancher et trier
Notez que tout ce découpage et ce tri sont très bon marché dans une conception indexée et normalisée.
la source
Pour les scores, en termes de performances, le gagnant clair le stocke numériquement quelque chose comme ça;
Son facile à interroger, facile à mettre à jour et à ajouter, et super facile et rapide pour effectuer des agrégats. Étant donné le choix de "stocker ces informations sous forme de chaîne que je dois diviser" ou "stocker dans une colonne" ... le gagnant va presque toujours être "stocker dans une colonne" pour la plupart des cas d'utilisation dans un SGBDR.
la source
tant que vous utilisez tiny int (0 à 255) en utilisant un char (15) ou 15 tinyint est le même (en termes de taille). Donc, du point de vue des performances, optez pour les 15 minuscules puisque vous économisez sur l'extraction et la gestion des chaînes.
MISE À JOUR
si les marques sont à deux chiffres, vous aurez besoin de CHAR (30) et cela fait deux fois la taille de 15 fois un minuscule.
la source