Gelukkig kun je sinds MySQL 4.0.0 SQL_CALC_FOUND_ROWS
gebruiken optie in uw zoekopdracht die MySQL zal vertellen om het totale aantal rijen te tellen zonder rekening te houden met LIMIT
clausule. U moet nog steeds een tweede query uitvoeren om het aantal rijen op te halen, maar het is een eenvoudige query en niet zo complex als uw query waarmee de gegevens zijn opgehaald. Het gebruik is vrij eenvoudig. In je hoofdquery moet je SQL_CALC_FOUND_ROWS
. toevoegen optie net na SELECT
en in de tweede zoekopdracht moet je FOUND_ROWS()
. gebruiken functie om het totale aantal rijen te krijgen. Query's zien er als volgt uit:
SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;
SELECT FOUND_ROWS();
De enige beperking is dat u de tweede query onmiddellijk na de eerste moet aanroepen omdat SQL_CALC_FOUND_ROWS
slaat nergens het aantal rijen op. Hoewel deze oplossing ook twee query's vereist, is het veel sneller, omdat u de hoofdquery maar één keer uitvoert. U kunt meer lezen over SQL_CALC_FOUND_ROWS en FOUND_ROWS()
in MySQL-documenten.
BEWERKEN: Houd er rekening mee dat in de meeste gevallen het tweemaal uitvoeren van de query eigenlijk sneller is dan SQL_CALC_FOUND_ROWS
. zie hier
BEWERK 2019:
De SQL_CALC_FOUND_ROWS-querymodifier en de bijbehorende FOUND_ROWS()-functie zijn verouderd vanaf MySQL 8.0.17 en worden verwijderd in een toekomstige MySQL-versie.
https://dev.mysql.com /doc/refman/8.0/en/information-functions.html#function_found-rows
Het wordt aanbevolen om COUNT
. te gebruiken in plaats daarvan
SELECT * FROM tbl_name WHERE id > 100 LIMIT 10;
SELECT COUNT(*) WHERE id > 100;