Ecco come interrogare il database per la classifica del giocatore udid 1
:
SELECT COUNT(*) AS rank
FROM tablename
WHERE score > (SELECT score FROM tablename WHERE udid = 1)
Suppongo che un punteggio più alto sia migliore e che tu memorizzi solo il punteggio più alto per ogni giocatore.
Con un indice su score
e udid
, dovrebbe essere abbastanza veloce.
Quello che fa la query è contare il numero di utenti che hanno un punteggio maggiore rispetto all'utente selezionato.
Se un punteggio più basso è migliore, cambialo semplicemente in questo:
SELECT COUNT(*) AS rank
FROM tablename
WHERE score < (SELECT score FROM tablename WHERE udid = 1)
Che conta il numero di giocatori con un punteggio più basso.
Leggi tutto sugli Indici MySQL .