SQL_CALC_FOUND_ROWS
ist nur sinnvoll, wenn Sie ein LIMIT
verwenden -Klausel, möchten aber trotzdem wissen, wie viele Zeilen ohne LIMIT
gefunden worden wären .
Überlegen Sie, wie das funktioniert:
SELECT SQL_CALC_FOUND_ROWS * FROM Users;
Sie zwingen die Datenbank, ALLE Daten in der Tabelle abzurufen/parsen, und werfen sie dann weg. Selbst wenn Sie keine der Zeilen abrufen, beginnt der DB-Server dennoch damit, tatsächliche Daten von der Festplatte abzurufen, in der Annahme, dass Sie diese Daten benötigen.
In menschlicher Hinsicht haben Sie den gesamten Inhalt des Super-Lebensmittelladens gekauft, aber alles außer der Kaugummipackung vom Stand an der Kasse weggeworfen.
Dabei:
SELECT count(*) FROM users;
teilt der DB-Engine mit, dass Sie zwar wissen möchten, wie viele Zeilen vorhanden sind, sich aber nicht um die tatsächlichen Daten kümmern können. Bei den meisten intelligenten DBMS kann die Engine diese Anzahl aus den Metadaten der Tabelle abrufen oder einfach den Primärschlüsselindex der Tabelle durchlaufen, ohne jemals die Zeilendaten auf der Festplatte zu berühren.