Heim  >  Artikel  >  Backend-Entwicklung  >  Wie zähle ich die gesamten Abfrageergebnisse in MySQL mit Offset- und Limit-Optimierung?

Wie zähle ich die gesamten Abfrageergebnisse in MySQL mit Offset- und Limit-Optimierung?

DDD
DDDOriginal
2024-10-23 13:08:30529Durchsuche

How to Count Total Query Results in MySQL with Offset and Limit Optimization?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn