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

PDO fetchall() præstationsovervejelser?

Hypotetisk, hvis du skal udskrive alle 100.000 rækker i et enkelt svar, skal du indstille PDO::MYSQL_ATTR_USE_BUFFERED_QUERY til false , udfør forespørgslen, og gentag resultatsættet en række ad gangen ved hjælp af fetch . For at uddybe, buffer php hele resultatsættet, uanset om du kalder fetchAll() hvis PDO::MYSQL_ATTR_USE_BUFFERED_QUERY er sat til sand.

Fordelen er, at du drastisk reducerer det maksimale hukommelsesforbrug for scriptet, og du kommer til at begynde at streame output hurtigere, selvom den samlede tid til færdiggørelse måske eller måske ikke tager længere tid.

Jeg ignorerer andre ting, du bør overveje under sådanne ekstreme omstændigheder, som outputbuffer osv...



  1. MySQL SELECT-sætning med ét DISTINCT-felt

  2. Er det muligt at sende en variabel til et lagret procedurekald i mysql?

  3. App stoppede med at fungere på grund af database

  4. Hvad er bedste praksis for selvopdatering af PHP+MySQL-applikationer?