MySQL ma specjalne wsparcie dla tego typu rzeczy. Najpierw uwzględnij SQL_CALC_FOUND_ROWS
w WYBIERZ:
SELECT SQL_CALC_FOUND_ROWS *
FROM Badges
WHERE UID = '$user'
ORDER by Date DESC
LIMIT 10 -- Or whatever
Następnie wyciągnij wiersze i od razu spójrz na FOUND_ROWS()
tak:
SELECT FOUND_ROWS()
aby uzyskać liczbę wierszy pasujących do oryginalnego zapytania bez uwzględniania klauzuli LIMIT.
Jest to specyficzne dla MySQL, ale powinno być trochę szybsze niż wykonywanie dwóch zapytań.