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

Doktrinforespørgsel for at finde det samlede antal resultater i MySQL med LIMIT

Der er en pagineringsfunktion, som er indbygget i 2.2 og gør noget, der ligner det, du leder efter:

https://www.doctrine -project.org/projects/doctrine-orm/en/latest/tutorials/pagination.html#pagination

Men jeg tror ikke, den bruger SQL_CALC_FOUND_ROWS :den udfører to (eller tre, afhængigt af hvordan du konfigurerer det) separate forespørgsler for at få resultaterne, og det er ofte den korrekte måde at fortsætte på.

Hvis du virkelig insisterer på at bruge MySQL-funktionen, tror jeg, du skal bruge rå SQL og en resultatsæt-mapping. Her er et eksempel:

Optælling af rækker i doktrin 2

På en helt separat note, test om SQL_CALC_FOUND_ROWS er faktisk værd at bruge til din specifikke forespørgsel. Count er godt optimeret i MySQL til forespørgsler som den, du laver. Se især dette spørgsmål:

Hvilken er hurtigst? VÆLG SQL_CALC_FOUND_ROWS FRA `tabel`, eller VÆLG COUNT(*)



  1. auto_increment brug i sammensat nøgle

  2. Forældet:mysql_connect()

  3. Generer tilfældige heltal uden kollisioner

  4. Flere IF-sætninger på MYSQL