SQL_CALC_FOUND_ROWS
er kun nyttig, hvis du bruger en LIMIT
klausul, men vil stadig gerne vide, hvor mange rækker der ville være blevet fundet uden LIMIT
.
Tænk på, hvordan dette virker:
SELECT SQL_CALC_FOUND_ROWS * FROM Users;
Du tvinger databasen til at hente/parse ALLE data i tabellen, og så smider du dem væk. Selvom du ikke vil hente nogen af rækkerne, vil DB-serveren stadig begynde at trække faktiske data fra disken under den antagelse, at du vil have disse data.
I menneskelige termer købte du hele indholdet af superkøbmanden, men smed alt undtagen tyggegummipakken fra standen ved kassereren.
Hvorimod, gør:
SELECT count(*) FROM users;
lader DB-motoren vide, at selvom du vil vide, hvor mange rækker der er, kunne du ikke være ligeglad med de faktiske data. På de fleste intelligente DBMS'er kan motoren hente denne optælling fra tabellens metadata eller en simpel kørsel gennem tabellens primære nøgleindeks uden nogensinde at røre rækkedataene på disken.