[Mysql/PHP] Ranking ermitteln

Hallo !

Ich habe eine Datenbank mit ca. 450.000 Datensätzen. Es handelt sich um Anwender und ein Feld in der Datenbank beschreibt das Guthaben. Ich möchte nun ein Ranking erstellen. Top 20 und die Position vom aktuellen User.

Beispiel :

Top 20 ( Deine Position 321.299 )

Ich überlege nun, wie ich die eigene Position bestimmten kann. Am einfachsten wäre es alle 450.000 auszulesen und zu sortieren und dann müsste man diese mit einer Schleife durchlaufen. Alternativen wären ja Sachen wie Quicksort oder MergeSort. Kennt eine eine Lösung die eventuell auf DB - Ebene funktioniert ?
 
@she3p: ich glaube der erste Teil ist Dawen auch noch klar... ihm geht's ja ums eigene Ranking - also die Zahl bei "Deine Position"
edit: okay. ich nehm alles zurück - wenn er mit QuickSort und co. anfangen will, ist ihm anscheinend auch ORDER BY unbekannt... :D

eigenes Guthaben ermitteln:
Code:
SELECT uid, credit FROM user_credits WHERE uid = :myUserId

Und diesen Wert dann in die zweite Query einsetzen, um die Anzahl der Einträge zu zählen, deren Guthaben größer oder gleich ist:
Code:
SELECT COUNT(*) as ranking FROM user_credits WHERE credit >= :myCredit
 
@she3p: ich glaube der erste Teil ist Dawen auch noch klar... ihm geht's ja ums eigene Ranking - also die Zahl bei "Deine Position"

Ja - Trotzdem Danke

@beavisbee :

Das teste ich mal. Sollte eigentlich klappen. Ich habe es immer mit Sortieralgorithmen versucht, was den Server aber schnell in die Knie zwingt. Danke !
 
Ich habe es immer mit Sortieralgorithmen versucht, was den Server aber schnell in die Knie zwingt.

Dein Server tut mir echt leid... ;)
wenn du überlegst, was du da schon allein an RAM belegst, einfach weil du riesige Datenmengen in nem Array hälst, um sie dann umständlich zu sortieren...

schau dir mal die ganzen Aggregat-Funktionen an, die (My)SQL so kann:
MySQL :: MySQL 5.1 Referenzhandbuch :: 12.11.1 Funktionen zur Benutzung in GROUP BY-Klauseln

kannst also nicht nur direkt per SQL die Anzahl bestimmen, sondern auch Summe, Minimum, Maximum, Mittelwert, Varianz und Standard-Abweichung u.s.w. berechnen lassen...
 
Dein Server tut mir echt leid... ;)

LOL - Ich gebe es an den Server weiter.

wenn du überlegst, was du da schon allein an RAM belegst, einfach weil du riesige Datenmengen in nem Array hälst, um sie dann umständlich zu sortieren...

Ja klar - Die Web - Applikation ist aber immer mehr gewachsen und jetzt muss halt was an der Perfomance gemacht werden. Ich sitze hier aber mit Fieber und mir ist da spontan nichts eingefallen - Feierabend :rolleyes:
 
Zurück
Oben