Skip site navigation (1) Skip section navigation (2)

Re: pg_fetch_array

From: "Scott Marlowe" <smarlowe(at)qwest(dot)net>
To: "ljb" <ljb220(at)mindspring(dot)com>
Cc: pgsql-php(at)postgresql(dot)org
Subject: Re: pg_fetch_array
Date: 2004-06-15 04:51:26
Message-ID: 1087275086.1582.1.camel@localhost.localdomain (view raw or flat)
Thread:
Lists: pgsql-php
On Mon, 2004-06-14 at 18:04, ljb wrote:
> Thanks(at)verymuch(dot)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.

Yes, operating on the whole set in memory at one time is not the best
job for PHP, but maybe for PostgreSQL.  

And there is a way to retrieve some small percentage at a time, use a
cursor.  See declare and fetch in the manual.  Works a charm in PHP.


In response to

pgsql-php by date

Next:From: Rinku ShivnaniDate: 2004-06-15 06:31:22
Subject: Apache installation
Previous:From: ljbDate: 2004-06-15 00:04:57
Subject: Re: pg_fetch_array

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group