sql >> Database >  >> RDS >> Mysql

Hoe alle records tellen, maar alleen een specifiek nummer ophalen (LIMIT) voor weergave?

MySQL heeft speciale ondersteuning voor dit soort dingen. Voeg eerst SQL_CALC_FOUND_ROWS . toe in uw SELECTEER:

SELECT SQL_CALC_FOUND_ROWS *
FROM Badges
WHERE UID = '$user'
ORDER by Date DESC
LIMIT 10 -- Or whatever

Trek dan je rijen eruit en kijk dan meteen naar FOUND_ROWS() zoals dit:

SELECT FOUND_ROWS()

om het aantal rijen te krijgen dat overeenkomt met uw oorspronkelijke zoekopdracht zonder rekening te houden met de LIMIT-clausule.

Dit is MySQL-specifiek, maar het zou iets sneller moeten zijn dan twee query's uitvoeren.



  1. MySQL TABLE-instructie

  2. Varchar(MAX) versus TEXT gebruiken op SQL Server

  3. PostgreSQL-index versus InnoDB-index - De verschillen begrijpen

  4. Bereken deciel van recentheid in MySQL