On Mon, Jul 24, 2017 at 3:12 PM, Dmitry Lazurkin <dila...@gmail.com> wrote:
> On 25.07.2017 00:31, David G. Johnston wrote: > > > Basically you want to write something like: > > SELECT * > FROM ids > JOIN ( :values_clause ) vc (vid) ON (vc.vid = ids.id) > > or > > WITH vc AS (SELECT vid FROM .... ORDER BY ... LIMIT ) > SELECT * > FROM ids > JOIN vc ON (vid = ids.id) > > > This query uses JOIN plan node as IN (VALUES ...). > > And I have one question. I don't understand why IN-VALUES doesn't use > Semi-Join? PostgreSQL has Hash Semi-Join... For which task the database > has node of this type? > > I think it is simply because no one has gotten around to implementing it that way. When you can just write it as a values list instead, the incentive to make the regular in-list work better is not all that strong. Cheers, Jeff