Paginierung in MySQL: Optimale Techniken ohne doppelte Abfragen
Paginierung, eine grundlegende Technik zur Anzeige großer Datensätze in überschaubaren Blöcken, umfasst oft zwei separate Abfragen in MySQL. Eine Abfrage ruft die Gesamtzahl der Ergebnisse ab, während eine andere die Ergebnisse basierend auf Paginierungsparametern einschränkt.
Doppelte Abfrage: Ein herkömmlicher Ansatz
Traditionell wird die Paginierung durch erreicht Folgende Schritte:
Führen Sie eine Abfrage aus, um die Gesamtzahl zu zählen Ergebnisse:
SELECT COUNT(*) FROM `table` WHERE `some_condition`
Beschränken Sie die Ergebnisse, um eine bestimmte Seite anzuzeigen:
SELECT `fields` FROM `table` WHERE `some_condition` LIMIT 0, 10
Einschränkungen der Doppelabfrage
Obwohl dieser Ansatz zuverlässig ist, weist er folgende Nachteile auf Einschränkungen:
Alternative Techniken
Obwohl die doppelte Abfrage eine weit verbreitete Technik ist, ist sie nicht die einzige Option für die Paginierung. Hier sind alternative Methoden:
Verwenden von SQL_CALC_FOUND_ROWS und FOUND_ROWS()
Führen Sie eine Abfrage mit der SQL_CALC_FOUND_ROWS-Klausel aus:
SELECT `fields` FROM `table` WHERE `some_condition` ORDER BY `field_name`
Ausführen SELECT FOUND_ROWS(), um die Gesamtzahl der Ergebnisse abzurufen:
SELECT FOUND_ROWS()
Einschränkungen von SQL_CALC_FOUND_ROWS
Caching
Caching Die Gesamtzahl kann die Leistung sowohl bei Doppelabfragen als auch bei SQL_CALC_FOUND_ROWS-Techniken erheblich verbessern. Indem Sie die Zählung in einer temporären Datenbank oder einem Cache speichern, können Sie die wiederholte Ausführung der Zählabfrage vermeiden.
Auswahl der optimalen Technik
Die beste Paginierungstechnik für Ihre Anwendung hängt davon ab Dies hängt von verschiedenen Faktoren ab, darunter der Größe des Datensatzes, den Leistungsanforderungen und dem Vorhandensein von Sortier- oder Filterkriterien. Beachten Sie die folgenden Richtlinien:
Das obige ist der detaillierte Inhalt vonWie optimiert man die MySQL-Paginierung, ohne zwei Abfragen durchzuführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!