Zum Glück seit MySQL 4.0.0 können Sie die Option SQL_CALC_FOUND_ROWS in Ihrer Abfrage verwenden, die MySQL anweist, die Gesamtzahl der Zeilen ohne Berücksichtigung der LIMIT-Klausel zu zählen. Sie müssen noch eine zweite Abfrage ausführen, um die Anzahl der Zeilen abzurufen, aber es ist eine einfache Abfrage und nicht so komplex wie Ihre Abfrage, die die Daten abgerufen hat. Die Nutzung ist ziemlich einfach. In Ihrer Hauptabfrage müssen Sie die Option SQL_CALC_FOUND_ROWS direkt nach SELECT hinzufügen, und in der zweiten Abfrage müssen Sie die Funktion FOUND_ROWS() verwenden, um die Gesamtanzahl der Zeilen zu erhalten. Abfragen würden wie folgt aussehen:
SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;
SELECT FOUND_ROWS();
Die einzige Einschränkung ist, dass Sie zweite Abfrage unmittelbar nach dem ersten Anruf muss, weil SQL_CALC_FOUND_ROWS Anzahl der Zeilen nicht überall speichern. Obwohl diese Lösung auch zwei Abfragen erfordert, ist sie wesentlich schneller, da Sie die Hauptabfrage nur einmal ausführen. Sie können mehr über SQL_CALC_FOUND_ROWS and FOUND_ROWS() in MySQL-Dokumentation lesen.
EDIT: Sie sollten beachten, dass in den meisten Fällen das Ausführen der Abfrage zweimal schneller ist als SQL_CALC_FOUND_ROWS. siehe here
Sie erhalten bald den Hinweis, 'SQL_CALC_FOUND_ROWS' zu verwenden, aber die Sache ist, dass' COUNT (*) 'mit den gleichen Bedingungen effizienter ist – zerkms
Haben Sie dies überprüft: http://stackoverflow.com/ Fragen/2229218/Was-ist-Mysql-Version-of-rowcount – jtheman
Werfen Sie einen Blick auf diese: http://stackoverflow.com/questions/5928611/find-total-number-of-results-in-mysql-query- with-offsetlimit –