MySQL има специална поддръжка за този вид неща. Първо, включете SQL_CALC_FOUND_ROWS
във вашия SELECT:
SELECT SQL_CALC_FOUND_ROWS *
FROM Badges
WHERE UID = '$user'
ORDER by Date DESC
LIMIT 10 -- Or whatever
След това издърпайте своите редове и след това незабавно погледнете FOUND_ROWS()
така:
SELECT FOUND_ROWS()
за да получите броя на редовете, които съответстват на оригиналната ви заявка, без да вземете предвид клаузата LIMIT.
Това е специфично за MySQL, но трябва да е малко по-бързо от извършването на две заявки.