Wanneer je paginering maakt op je website zal je gebruik maken van “limit” om ervoor te zorgen dat de items van de eerdere pagina’s niet weergeven worden en de items van de nog te komen pagina ook niet. Een stukje pseudo code:
SELECT name,image,price FROM products WHERE category=6 LIMIT 20,10
Dit zorgt ervoor dat de eerste 20 producten overgeslagen worden en de volgende 10 weergegeven worden. Maar hoe komen we er nu achter hoeveel producten er totaal zijn? Hiervoor kunnen we natuurlijk de query nogmaals uitvoeren en de limit weg laten. In dit geval is dat niet een probleem, maar wat als het een grote complexe query is? Een mooie standaard om aan te houden is natuurlijk DRY, dan is dat geen optie. Gelukkig heeft MySQL ook hier wat moois voor FOUND_ROWS()! Wanneer we dit toepassen zal onze query er zo uit zien:
SELECT SQL_CALC_FOUND_ROWS name,image,price FROM products WHERE category=6 LIMIT 20,10
Maar het resultaat is het zelfde? Dat klopt want hierna dienen we een tweede query te versturen welke het totaal gaat ophalen:
SELECT FOUND_ROWS()
Deze tweede query geeft het aantal gevonden items terug van de eerste query zonder de limit!