Re: How to get many data at once? - Mailing list pgsql-general

From Dmitry Koterov
Subject Re: How to get many data at once?
Date
Msg-id d7df81620808130334o400e50f0k82ce8b4f221d1c22@mail.gmail.com
Whole thread Raw
In response to How to get many data at once?  ("窦德厚(ddh)" <doudehou@gmail.com>)
List pgsql-general
Try to use

SELECT ARRAY(SELECT t_data FROM THETABLE WHERE t_ref_id = '1') AS v;

In PHP you may fetch all matched values as a single string and then - use explode() to split it into values (possibly with later stripslashes).
It is much faster than fetching a thousands of rows.


On Thu, Aug 7, 2008 at 3:03 PM, 窦德厚(ddh) <doudehou@gmail.com> wrote:
Hi, if I have such a table:

t_ref_id     t_data
--------------------
1             'abc'
2             '321'
1             'ddd'
2             'xyz'
9             '777'
...


I want to get data with a special t_ref_id:

SELECT t_data FROM THETABLE WHERE t_ref_id = '1';

I must use a while loop to extract the data (I'm using PHP):

$rows = array();
while (($row = pgsql_fetch_assoc($result) !== false) {
    $rows[] = $row;
}

And if there are many matched rows, such as many hundreds or thousands of rows, I think such a loop maybe inefficient.

How to do this in a more efficient way?

Thank you!



--
ddh


pgsql-general by date:

Previous
From: "Dmitry Koterov"
Date:
Subject: Re: How to modify ENUM datatypes? (The solution)
Next
From: "Bartels, Eric"
Date:
Subject: Postgres eats all memory