Gesamtzeilenanzahl mit LIMIT-Bedingung abrufen
Bei Verwendung einer SQL-Abfrage mit einer LIMIT-Klausel für die Paginierung wird die Gesamtzahl der Zeilen ermittelt eine Herausforderung. Der Standardansatz besteht darin, die Abfrage zweimal auszuführen, einmal ohne die LIMIT-Klausel, um die Zeilenanzahl zu erhalten, und dann noch einmal mit LIMIT, um die paginierten Daten abzurufen. Dieser Vorgang kann bei komplexen Abfragen zeitaufwändig sein.
Allerdings gibt es in MySQL 4.0.0 eine effizientere Lösung:
Verwendung von SQL_CALC_FOUND_ROWS und FOUND_ROWS()
Die Option SQL_CALC_FOUND_ROWS kann der Abfrage nach der SELECT-Anweisung hinzugefügt werden. Dadurch wird MySQL angewiesen, die Gesamtzahl der Zeilen zu berechnen, ohne die LIMIT-Bedingung zu berücksichtigen. Um die Gesamtzahl der Zeilen abzurufen, ist eine zweite Abfrage mit der Funktion FOUND_ROWS() erforderlich.
Verwendung:
SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10; SELECT FOUND_ROWS();
Hinweis: Es ist wichtig, die zweite Abfrage unmittelbar nach der ersten auszuführen, da SQL_CALC_FOUND_ROWS die Zeilenanzahl nicht dauerhaft speichert.
Veraltung von SQL_CALC_FOUND_ROWS und FOUND_ROWS()
As Von MySQL 8.0.17 sind der Abfragemodifikator SQL_CALC_FOUND_ROWS und die Funktion FOUND_ROWS() veraltet und werden in einer zukünftigen MySQL-Version entfernt. Es wird empfohlen, stattdessen COUNT zu verwenden:
SELECT * FROM tbl_name WHERE id > 100 LIMIT 10; SELECT COUNT(*) WHERE id > 100;
Das obige ist der detaillierte Inhalt vonWie kann ich die Gesamtzeilenzahl mit LIMIT in MySQL effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!