si, hai ragione, va fatto l'ordinamento per lo score non per l'user ^^
scusami, e che ho scritto di fretta (come sempre, asd) e non ho ricontrollato più di tanto
cmq, la procedura, a parte l'ordinamento, dovrebbe essere quella
considera che con questo sistema invece di fare delle ipotetiche 1 + 5000 + 15000 + 5000 + 5000 = 30001 query ne lanceresti 1 + (5000/500) = 11 query 
le ultime 5000/500 rappresentano le query per l'aggiornamento della scoreboard che puoi raggruppare usando una INSERT ... ON DUPLICATES! Ovvero qualcosa tipo ...
codice:
INSERT INTO
totalscores
(
user_id,
points
)
VALUES
(
1,
100
),
(
2,
100
)
.
.
.
ON DUPLICATE KEY UPDATE
points = VALUES(points)
ovviamente il campo user_id lo fai una primary key NON autoincrementante
i vari values li costruisci con un secondo ciclo, qualcosa tipo
codice:
array_push($scoreboard, false);
$executeQuery = false;
$valuesToInsert = array();
$valuesToInsertCounter = 0;
foreach($scoreboard as $userId => $points)
{
if ($points === false)
{
$executeQuery = true;
}
else
{
$valuesToInsert[] = sprintf('(%d, %d)', $userId, $points);
$valuesToInsertCounter++;
if ($valuesToInsertCounter >= 500)
{
$executeQuery = true;
$valuesToInsertCounter = 0;
}
}
if ($executeQuery === true)
{
$executeQuery = false;
mysql_query(sprintf('
INSERT INTO
totalscores
(
userid,
points
)
VALUES
%s
ON DUPLICATE KEY UPDATE
points = VALUES(points)',
implode(', ', $valuesToInsert));
$valuesToInsert = array();
}
}
unset($valuesToInsert);
il codice provalo, non dovrebbero esserci errori gravi ... l'ho scritto qui stesso senza testarlo ... comunque a livello logico dovrebbe essere ok
cambiando il valore da 500 a valori più piccoli non conviene e a valori troppo alti nemmeno! considera che tutto quello che puoi recuperare, con 500 inserimenti/aggiornamenti per volta, già l'ho recuperi, però se lo aumenti mysql deve fare meno lavoro
in aggiunta potresti fare una transazione, non tanto per eventuali problemi con i valori d'uscita, ma perché mysql effettua le operazioni di scrittura alla fine ottimizzando ancora di più il tutto!