Bestimmen der Gesamtzeilenzahl mit Paginierung
Bei der Implementierung der Paginierung in einer SQL-Abfrage kann die genaue Bestimmung der Gesamtzahl der Zeilen von entscheidender Bedeutung sein. Das zweimalige Ausführen der Abfrage – einmal ohne die LIMIT-Klausel zum Zählen der Zeilen und einmal mit der LIMIT-Klausel zum Abrufen der paginierten Daten – ist möglicherweise nicht optimal, insbesondere bei komplexen Abfragen.
Glücklicherweise bietet MySQL eine elegante Lösung mit die Konstrukte SQL_CALC_FOUND_ROWS und FOUND_ROWS(). Durch das Hinzufügen von SQL_CALC_FOUND_ROWS zur Hauptabfrage zählt MySQL die Gesamtzahl der Zeilen, auch wenn die LIMIT-Klausel vorhanden ist. Eine nachfolgende Abfrage mit FOUND_ROWS() ruft diese Anzahl ab.
Hier ein Beispiel:
SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10; SELECT FOUND_ROWS();
Dieser Ansatz ist schneller als die zweimalige Ausführung der Abfrage und liefert eine genaue Gesamtzahl.
Veraltete Funktionen in MySQL 8
In MySQL 8.0.17 waren SQL_CALC_FOUND_ROWS und FOUND_ROWS() veraltet. Für neuere MySQL-Versionen wird empfohlen, stattdessen COUNT zu verwenden.
SELECT * FROM tbl_name WHERE id > 100 LIMIT 10; SELECT COUNT(*) WHERE id > 100;
Durch die Nutzung dieser Techniken können Entwickler Zeilen in paginierten SQL-Abfragen genau zählen, ohne den Aufwand mehrerer Abfragen.
Das obige ist der detaillierte Inhalt vonWie kann die Gesamtzeilenanzahl in paginierten SQL-Abfragen effizient ermittelt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!