Heim > Datenbank > MySQL-Tutorial > SQL_CALC_FOUND_ROWS vs. SELECT COUNT(*): Was ist schneller für die Paginierung?

SQL_CALC_FOUND_ROWS vs. SELECT COUNT(*): Was ist schneller für die Paginierung?

DDD
Freigeben: 2024-12-31 10:35:14
Original
868 Leute haben es durchsucht

SQL_CALC_FOUND_ROWS vs. SELECT COUNT(*): Which is Faster for Pagination?

Leistungsvergleich: SQL_CALC_FOUND_ROWS vs. SELECT COUNT(*)

Bei der Suche nach der Gesamtzahl der Datensätze in einer Abfrage unter Verwendung der Paginierung, zwei Methoden entstehen: SQL_CALC_FOUND_ROWS und SELECT COUNT(*). Die Bestimmung des optimalen Ansatzes hängt von verschiedenen Faktoren ab.

Methode 1: SQL_CALC_FOUND_ROWS

Diese Methode verwendet SQL_CALC_FOUND_ROWS in der ersten SELECT-Abfrage und verwendet anschließend FOUND_ROWS(), um die Gesamtsumme abzurufen Zeilenanzahl. Die Syntax lautet wie folgt:

SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE id > 100 LIMIT 10;
SELECT FOUND_ROWS();
Nach dem Login kopieren

Methode 2: SELECT COUNT(*)

Alternativ zählt eine separate Abfrage die Zeilen mit SELECT COUNT(*), nach der Ausführung der ursprünglichen Abfrage. Die Syntax lautet:

SELECT * FROM table WHERE id > 100 LIMIT 10;
SELECT COUNT(*) FROM table WHERE id > 100;
Nach dem Login kopieren

Leistungsbewertung

Die Leistung jeder Methode variiert je nach Faktoren wie Indexverfügbarkeit und Abfragekomplexität. Eine umfassende Analyse des MySQL Performance Blog legt nahe, dass:

  • SQL_CALC_FOUND_ROWS im Allgemeinen langsamer ist als die Ausführung von zwei Abfragen, insbesondere wenn Indizes nicht optimiert sind oder die Abfrage komplex ist.
  • Der Leistungsunterschied wird mit zunehmender Reihe größer Anzahlen.
  • Bei Abfragen mit komplexen Ausdrücken oder Unterabfragen kann SQL_CALC_FOUND_ROWS aufgrund der Indexnutzung jedoch möglicherweise SELECT COUNT(*) übertreffen.

Letztendlich Der ideale Ansatz hängt vom spezifischen Kontext und den Anwendungsanforderungen ab. Wie im Performance-Blogbeitrag erwähnt: „Das hängt von Ihren Indizes und anderen Faktoren ab.“

Das obige ist der detaillierte Inhalt vonSQL_CALC_FOUND_ROWS vs. SELECT COUNT(*): Was ist schneller für die Paginierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage