From: | Greg Stark <gsstark(at)mit(dot)edu> |
---|---|
To: | John DeSoi <desoi(at)pgedit(dot)com> |
Cc: | Sam Mason <sam(at)samason(dot)me(dot)uk>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: join from array or cursor |
Date: | 2009-08-21 13:16:33 |
Message-ID: | 407d949e0908210616n2aa17ej48806379e427cb98@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Fri, Aug 21, 2009 at 1:16 PM, John DeSoi<desoi(at)pgedit(dot)com> wrote:
>
> Yes, this is the best I have come up with so far. I have a set returning
> function which returns the key and the index number. The implementation with
> a cursor looks like this:
>
> SELECT * FROM cursor_pk('c1') c LEFT JOIN foo ON (c.pk = foo.pk) ORDER BY
> c.idx;
This might be a circumstance where it's really best to just force the
planner to use a particular plan. There's no way to tell it "the order
of the array" without forcing an entirely unnecessary sort.
Something like
SET LOCAL enable_mergejoin = 'off';
SET LOCAL enable_hashjoin = 'off';
SELECT * from unnest(arr) as v(id) join tab using (id)
RESET ALL;
From | Date | Subject | |
---|---|---|---|
Next Message | Greg Stark | 2009-08-21 13:22:54 | Re: join from array or cursor |
Previous Message | Grzegorz Jaśkiewicz | 2009-08-21 13:13:36 | Re: Temp table or normal table for performance? |