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

Considerazioni sulle prestazioni di PDO fetchall()?

Ipoteticamente, se devi generare tutte le 100.000 righe in una singola risposta, dovresti impostare PDO::MYSQL_ATTR_USE_BUFFERED_QUERY a false , esegui la query e ripeti il ​​set di risultati una riga alla volta utilizzando fetch . Per elaborare, php bufferizza l'intero set di risultati indipendentemente dal fatto che tu chiami o meno fetchAll() if PDO::MYSQL_ATTR_USE_BUFFERED_QUERY è impostato su true.

Il vantaggio è che riduci drasticamente il consumo massimo di memoria dello script e puoi avviare lo streaming dell'output prima, anche se il tempo totale per il completamento può richiedere o meno più tempo.

Sto ignorando altre cose che dovresti considerare in circostanze così estreme, come il buffering dell'output ecc...