Heim  >  Artikel  >  Datenbank  >  Wie kann ich mit SQL_CALC_FOUND_ROWS effizient die Zeilenanzahl in paginierten MySQL-Abfragen ermitteln?

Wie kann ich mit SQL_CALC_FOUND_ROWS effizient die Zeilenanzahl in paginierten MySQL-Abfragen ermitteln?

Barbara Streisand
Barbara StreisandOriginal
2024-11-01 03:58:28344Durchsuche

How to Efficiently Get Row Count in Paginated MySQL Queries with SQL_CALC_FOUND_ROWS?

Verwenden von SQL_CALC_FOUND_ROWS zum Abrufen der Zeilenanzahl trotz LIMIT

Beim Ausführen komplexer MySQL-Abfragen mit Paginierung („LIMIT“-Klauseln) kann es schwierig sein, die Gesamtzeilenanzahl zu ermitteln. Das zweimalige Ausführen der Abfrage, einmal ohne die LIMIT-Klausel für die Gesamtanzahl, kann ineffizient sein.

Glücklicherweise hat MySQL die Option SQL_CALC_FOUND_ROWS eingeführt, mit der Sie die Gesamtzeilenanzahl berechnen können, während Sie weiterhin die LIMIT-Klausel verwenden. So funktioniert es:

  1. Fügen Sie SQL_CALC_FOUND_ROWS zu Ihrer Hauptabfrage hinzu:
    Fügen Sie direkt nach der SELECT-Klausel SQL_CALC_FOUND_ROWS zu Ihrer Hauptabfrage hinzu.
  2. Führen Sie eine zweite Abfrage aus, um die Zeilenanzahl abzurufen:
    Führen Sie eine zweite Abfrage mit der Funktion FOUND_ROWS() aus, um die Gesamtzeilenanzahl abzurufen.

Beispielabfragen:

<code class="sql">-- Main query with SQL_CALC_FOUND_ROWS
SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;

-- Second query to get row count
SELECT FOUND_ROWS();</code>

Einschränkungen und Alternativen:

Obwohl SQL_CALC_FOUND_ROWS eine praktische Lösung bietet, beachten Sie, dass seine Verwendung in MySQL 8.0.17 veraltet ist. In den meisten Fällen ist es immer noch schneller, die Abfrage zweimal auszuführen.

Als Alternative führt MySQL 8.0 die folgenden optimierten Optionen zum Abrufen der Zeilenanzahl ein:

  • ROW_COUNT() Funktion: Gibt die Anzahl der von der vorherigen Abfrage zurückgegebenen Zeilen zurück.
  • COUNT() Funktion: Verwenden Sie COUNT(*) als Unterabfrage, um die Zeilenanzahl zu berechnen.

Durch den Einsatz dieser Techniken können Entwickler die Gesamtzeilenanzahl in ihren paginierten MySQL-Abfragen effizient abrufen, ohne Geschwindigkeit oder Leistung zu beeinträchtigen.

Das obige ist der detaillierte Inhalt vonWie kann ich mit SQL_CALC_FOUND_ROWS effizient die Zeilenanzahl in paginierten MySQL-Abfragen ermitteln?. 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