Ich habe eine MySQL-Datenbank zu erstellen, Werte zu speichern, wie unten:einen Index für MySQL-Tabelle Erstellen
id bigint(18) auto_increment,
NameOfStudent char(40),
UnixTime_YearOfExam bigint(18),
percentageScored decimal(5,2),
marksSubJect1 decimal(5,2),
marksSubJect2 decimal(5,2),
marksSubJect3 decimal(5,2),
Die Abfragen werden:
Select *
from table
where NameOfStudent='xyz'
order by UnixTime_YearOfExam desc, percentageScored desc limit 3
Es gibt etwa 2000 Studenten mit Aufzeichnungen verschiedenen Jahre für jeden Schüler. Somit hat jeder Schüler ca. 5-10 Einträge. Meine Frage ist:
Was ist der Index für diese Tabelle sollte so die obige Abfrage schnell. Die Where-Klausel und Sortierung sowie
Wie kann ich die letzten 3 Datensätze von jedem Schüler (Reihenfolge von YearOfExam desc Limit 3) wählen, ohne für jeden Schüler individuelle Abfragen ausführen zu müssen? so, dass das Ergebnis, dass eine Abfrage wird wie folgt aussehen:
student_1, yearOfExam2015, percentageScored student_1, yearOfExam2014, percentageScored student_1, yearOfExam2013, percentageScored student_2, yearOfExam2015, percentageScored student_2, yearOfExam2014, percentageScored student_2, yearOfExam2013, percentageScored and so on
Vielleicht teilen Sie die Daten in mindestens zwei Tabellen, eine für den Studenten und eine für die Prüfungen, die nur als FK für einen Studenten. Mach dir keine Sorgen über die Leistung bei 2k Einträge, es ist zu diesem Zeitpunkt unbedeutend. –
Die Gesamtschüler sind etwa 2k. Die Aufzeichnungen sind 5-10 pro Schüler. Insgesamt etwa 100k-200k –
Wenn Sie die Mathematik, "2k * 10" ist 20k max ... –