Abrufen der gesamten Abfrageergebnisse in MySQL mit Offset und Limit
In Paginierungsszenarien ist es entscheidend, die Gesamtzahl der Ergebnisse in einem zu bestimmen MySQL-Abfrage zur Berechnung der Gesamtzahl der erforderlichen Seiten. Ein Ansatz besteht darin, die Abfrage zweimal auszuführen, einmal mit der Beschränkung zum Abrufen der paginierten Ergebnisse und einmal ohne Beschränkung zum Zählen der Gesamtzeilen. Dieser Ansatz ist jedoch möglicherweise ineffizient.
Geben Sie SQL_CALC_FOUND_ROWS ein: Eine optimiertere Lösung besteht darin, den Modifikator SQL_CALC_FOUND_ROWS in Ihrer ersten Abfrage zu verwenden. Durch die Einbeziehung dieses Modifikators berechnet MySQL die Gesamtzahl der übereinstimmenden Zeilen, bevor das Limit angewendet wird. Anschließend können Sie eine SELECT FOUND_ROWS()-Anweisung ausführen, um die Gesamtzahl abzurufen.
Verwendung:
Um SQL_CALC_FOUND_ROWS zu verwenden, fügen Sie es einfach am Anfang Ihrer Abfrage hinzu:
<code class="sql">SELECT SQL_CALC_FOUND_ROWS ...</code>
Führen Sie nach dem Ausführen der Abfrage Folgendes aus, um die Gesamtzahl der Zeilen abzurufen:
<code class="sql">SELECT FOUND_ROWS();</code>
Beispiel:
Sagen wir Sie haben eine Abfrage wie diese:
<code class="sql">SELECT * FROM `directory` WHERE `category_id` = 12 ORDER BY `name` ASC LIMIT 10 OFFSET 20;</code>
Um die Gesamtzahl der Ergebnisse zu berechnen, würden Sie die folgende zusätzliche Abfrage ausführen:
<code class="sql">SELECT FOUND_ROWS();</code>
Dadurch wird die Gesamtzahl der Zeilen zurückgegeben die Verzeichnistabelle mit der Kategorie-ID gleich 12, sodass Sie die Gesamtzahl der für die Paginierung erforderlichen Seiten effizient bestimmen können.
Das obige ist der detaillierte Inhalt vonWie zähle ich die gesamten Abfrageergebnisse in MySQL mit Offset- und Limit-Optimierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!