sql >> Database teknologi >  >> RDS >> Mysql

Få tælleforespørgselsresultater ved at ignorere LIMIT-sætningen

MySQL understøtter en FOUND_ROWS() funktion for at finde det ubegrænsede antal rækker, der ville være blevet returneret fra den tidligere begrænsede forespørgsel.

SELECT SQL_CALC_FOUND_ROWS * FROM blah WHERE disabled = '0'  LIMIT 10,20
SELECT FOUND_ROWS();

Bemærk, at (a) du skal inkludere SQL_CALC_FOUND_ROWS mulighed, og (b) at dette er en specifik MySQL-udvidelse, der ikke fungerer på et andet RDBMS (selvom de hver især har deres egen måde at gøre dette på.)

Dette er ikke nødvendigvis den bedste måde at gøre tingene på, selvom det måske føles som det; du skal stadig udsende to sætninger, du introducerer ikke-standard SQL, og den faktiske COUNT ing er sandsynligvis en lignende hastighed som en simpel SELECT COUNT(*)... alligevel. Jeg ville selv være tilbøjelig til at holde fast i standardmåden at gøre det på.



  1. Valg af alle poster fra et år siden til nu

  2. Nyt i PostgreSQL 12:Genererede kolonner

  3. MySQL-tidsstempel kun ved oprettelse

  4. Hvorfor (og hvordan) opdele kolonne ved hjælp af master..spt_values?