Thanks@verymuch.com wrote:
> Hello....
>
> I would like to know the performance of pg_fetch_array. Cosider the code:
>
> $query = "select * from foo";
> $result = pg_query( $db, $query );
>
> while ($row = pg_fetch_array($result))
> {
> $a = $row["a"];
> $b = $row["b"];
> $c = $row["c"];
> $d = $row["d"];
> }
>
> Does php need to read database everytime when pg_fetch_array is executed in
> the while loop or all the rows have been in the memory after pg_query?
The whole result query is stored in memory when pg_query returns, and
pg_fetch_array just gets the next row.
> If read database is needed, is there any method to copy all the things into
> memory by using other command? (because I have a application which needs
> large amount database update/retrieval and I wish the performance of the
> overall applications run faster.)
>
> or other method you would like to recommend in order to make the faster
> response time?
Actually, bringing the whole result into memory before processing any rows
can be slower, since the web server has to wait for the database server to
finish before it can start working on the data. So you can't get any
overlap of database and web server processing. As far as I know, there
isn't any alternative currently in the PHP PostgreSQL interface; there are
asynchronous queries but you still can't process any rows until they all
come back.