Re: Fetching multiple rows in single round trip

From: David Johnston <polobo(at)yahoo(dot)com>
To: Jon Smark <jon(dot)smark(at)yahoo(dot)com>
Cc: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Fetching multiple rows in single round trip
Date: 2012-05-18 18:30:22
Message-ID: E6AFE68A-FF40-4348-A061-4942DEA79CEF@yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On May 18, 2012, at 13:46, Jon Smark <jon(dot)smark(at)yahoo(dot)com> wrote:

> Dear postgresql-general,
>
> What would be the best way to fetch in a single round trip a set of table rows?
> To clarify, suppose I have a 'widgets' table with columns 'wid' and 'data',
> and I wish to retrieve all rows that belong to the client side array $targets.
> Obviously one solution would be to loop on the client-side, with each iteration
> fetching one row. This however entails many round trips in the client <->
> postmaster communication, which is undesirable for performance reasons.
> Therefore, I would rather tell the PostgreSQL server to give me all rows
> whose wid belongs in a given set.
>
> I can think of two solutions:
>
> 1) "SELECT wid, data FROM widgets WHERE wid IN $targets"
> 2) "SELECT wid, data FROM widgets WHERE ARRAY [wid] <@ $targets"
>
> Is there another (better) approach I'm missing? Also, is there any significant
> performance difference for PostgreSQL between solutions 1 and 2? (Solution
> 1 seems more efficient, though solution 2 is actually a better fit for the
> client-side bindings I'm using).
>
> Thanks in advance!
> Jon
>
>

...WHERE wid = ANY(string_to_array(?,';'))

where the ? is a parameter that you replace with a semi-colon delimited listing of widget IDs

Performance depends on specifics you have not provided, especially the expected number of widgets you are going to be filtering one.

David J.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message J.V. 2012-05-18 20:30:44 varchar for loops possible?
Previous Message Steve Crawford 2012-05-18 18:17:30 Re: odd intermittent query hanging issue