Is there a reason you can't rewrite your SELECT like:

SELECT UUID FROM MDM.KEYWORDS_INFO WHERE KEYWORDS_ID IN (a, b, c, d)

Even doing them 100 at a time will make a big difference; you should put as many in the list as pgsql supports. I'm assuming that there's an index over KEYWORDS_ID.

Retrieving 10000 rows with 10000 statements is generally a Bad Idea.

S

At 08:17 AM 12/22/2005, Dave Cramer wrote:
The problem is you are getting the entire list back at once.

You may want to try using a cursor.

Dave
On 15-Dec-05, at 9:44 AM, [EMAIL PROTECTED] wrote:

Hi,
I have a java.util.List of values (10000) which i wanted to use for
a query in the where clause of an simple select statement.
iterating over the list and and use an prepared Statement is quite
slow. Is there a more efficient way to execute such a query.

Thanks for any help.
Johannes
.....
List ids = new ArrayList();

.... List is filled with 10000 values ...

List uuids = new ArrayList();
PreparedStatement pstat = db.prepareStatement("SELECT UUID FROM
MDM.KEYWORDS_INFO WHERE KEYWORDS_ID = ?");
for (Iterator iter = ids.iterator(); iter.hasNext();) {
String id = (String) iter.next();
pstat.setString(1, id);
rs = pstat.executeQuery();
if (rs.next()) {
uuids.add(rs.getString(1));
}
rs.close();
}
...






---------------------------(end of
broadcast)---------------------------
TIP 6: explain analyze is your friend


---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

              http://www.postgresql.org/docs/faq



---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Reply via email to