MySQL har noget særlig support til denne slags ting. Først skal du inkludere SQL_CALC_FOUND_ROWS
i din SELECT:
SELECT SQL_CALC_FOUND_ROWS *
FROM Badges
WHERE UID = '$user'
ORDER by Date DESC
LIMIT 10 -- Or whatever
Træk derefter dine rækker ud og kig derefter straks på FOUND_ROWS()
sådan her:
SELECT FOUND_ROWS()
for at få antallet af rækker, der matchede din oprindelige forespørgsel uden at tage hensyn til LIMIT-sætningen.
Dette er MySQL-specifikt, men det burde være lidt hurtigere end at lave to forespørgsler.