Ich entwickle ein Studenten-Tracking-Programm, in dem ich 15 Prüfungsnoten speichern muss.
Ich kann die Markierungen als Zeichenfolge speichern und sie bei Bedarf aufteilen, um beispielsweise arithmetische Operationen durchzuführen. Ich brauche jedoch so viel Leistung wie möglich.
Welches ist besser? Ein einzelnes Zeichenfolgenfeld oder 15 einzelne int-Felder?
Antworten:
Wenn Sie bereits über Spaltung sprechen und Berechnung, nicht speichern diese als Array.
Unabhängig von der relationalen Theorie und den traditionellen Normalisierungsregeln und Dogmen ist es einfach ein Design, das Ihnen minimale Flexibilität bietet.
Machen Sie jedes Prüfungsergebnis zu einer Reihe.
Ich versuche nicht, alles vorwegzunehmen, aber es gibt eine sehr große Anzahl von Dingen, die dieses detailliertere (und ja normalisierte) und nur etwas platzsparendere Design erleichtert, das Sie jetzt oder möglicherweise nicht benötigen und möglicherweise oder möglicherweise benötigen möglicherweise nicht in der Zukunft benötigen:
Höchstes und niedrigstes Ergebnis rauswerfen? Sie müssen Ihr Array in Scheiben schneiden und sortieren.
Mittelwertbildung? Sie müssen es in Scheiben schneiden und summieren
Analyse des Prüfungsergebnisses durch Prüfung zwischen Studenten? Sie müssen schneiden und schwenken
Sortieren zum Zählen (oder Instanz britischer GCSEs, wo es 7 As und 2Bs sein könnte)? Sie müssen schneiden und sortieren
Beachten Sie, dass all dieses Schneiden und Sortieren in einem indizierten, normalisierten Design sehr billig ist.
quelle
In Bezug auf die Leistung speichert der klare Gewinner die Leistung numerisch in etwa so;
Es ist einfach abzufragen, einfach zu aktualisieren und hinzuzufügen und super einfach und schnell Aggregate durchzuführen. Angesichts der Wahl zwischen "Diese Informationen als Zeichenfolge speichern, die ich aufteilen muss" oder "In einer Spalte speichern" ... wird der Gewinner für die meisten Anwendungsfälle in einem RDBMS fast immer "In einer Spalte speichern" sein.
quelle
Solange Sie tiny int (0 bis 255) mit einem char (15) oder 15 tinyint verwenden, ist dies dasselbe (in Bezug auf die Größe). Aus Sicht der Leistung sollten Sie sich also für die 15 winzigen Punkte entscheiden, da Sie beim Extrahieren und beim Umgang mit Zeichenfolgen sparen.
AKTUALISIEREN
Wenn die Markierungen zweistellig sind, benötigen Sie CHAR (30) und das ist doppelt so groß wie das 15-fache eines winzigen Wertes.
quelle