MySQL a un support spécial pour ce genre de choses. Tout d'abord, incluez SQL_CALC_FOUND_ROWS
dans votre SELECT :
SELECT SQL_CALC_FOUND_ROWS *
FROM Badges
WHERE UID = '$user'
ORDER by Date DESC
LIMIT 10 -- Or whatever
Ensuite, sortez vos lignes et regardez immédiatement FOUND_ROWS()
comme ceci :
SELECT FOUND_ROWS()
pour obtenir le nombre de lignes correspondant à votre requête d'origine sans tenir compte de la clause LIMIT.
Ceci est spécifique à MySQL, mais cela devrait être un peu plus rapide que de faire deux requêtes.