MySQL: SQL_CALC_FOUND_ROWS statt zusätzlichem „Count()“-Query

Statt eines zusätzlichen Count-Queries (z.B. für eine Paginierung) kann SQL_CALC_FOUND_ROWS verwendet werden:

Anzahl der Gesamt-Datensätze (die auf das Kriterium passen) mit separatem Count-Query:
SELECT f1, f2, f3 FROM t WHERE t.f1 > 0 LIMIT 0,20;
SELECT count(f1) as sum FROM t WHERE t.f1 > 0;

Anzahl der Gesamt-Datensätze (die auf das Kriterium passen) ohne zusätzliches Count-Query:
SELECT SQL_CALC_FOUND_ROWS f1, f2, f3 FROM t WHERE t.f1 > 0 LIMIT 0,20;
SELECT FOUND_ROWS() AS sum;

Die Variante mit SQL_CALC_FOUND_ROWS ist insbesondere bei komplexen Queries sehr hilfreich, da hierbei das Query für den Count nicht dupliziert (und zukünftig mehrfach bei Änderungen gepflegt werden muss). Abgesehen davon ist diese Variante wesentlich schneller.