SQL_CALC_FOUND_ROWS
is alleen nuttig als u een LIMIT
. gebruikt clausule, maar wil toch weten hoeveel rijen er zouden zijn gevonden zonder de LIMIT
.
Bedenk hoe dit werkt:
SELECT SQL_CALC_FOUND_ROWS * FROM Users;
Je dwingt de database om ALLE gegevens in de tabel op te halen/ontleden, en dan gooi je het weg. Zelfs als u geen van de rijen gaat ophalen, zal de DB-server nog steeds echte gegevens van de schijf halen in de veronderstelling dat u die gegevens wel wilt hebben.
In menselijke termen, je kocht de hele inhoud van de supersupermarkt, maar gooide alles weg behalve het pakje kauwgom van de kraam bij de kassier.
Terwijl, doende:
SELECT count(*) FROM users;
laat de DB-engine weten dat hoewel u wilt weten hoeveel rijen er zijn, u niets kan schelen over de feitelijke gegevens. Op de meeste intelligente DBMS kan de engine deze telling ophalen uit de metadata van de tabel, of een simpele doorloop door de primaire sleutelindex van de tabel, zonder ooit de rijgegevens op de schijf aan te raken.