MySQL hat eine spezielle Unterstützung für diese Art von Dingen. Fügen Sie zuerst SQL_CALC_FOUND_ROWS
ein in Ihrem SELECT:
SELECT SQL_CALC_FOUND_ROWS *
FROM Badges
WHERE UID = '$user'
ORDER by Date DESC
LIMIT 10 -- Or whatever
Ziehen Sie dann Ihre Zeilen heraus und schauen Sie sich sofort FOUND_ROWS()
so:
SELECT FOUND_ROWS()
um die Anzahl der Zeilen zu erhalten, die mit Ihrer ursprünglichen Abfrage übereinstimmten, ohne die LIMIT-Klausel zu berücksichtigen.
Dies ist MySQL-spezifisch, sollte aber etwas schneller sein als zwei Abfragen.