Re: plan difference between set-returning function with ROWS within IN() and a plain join - Mailing list pgsql-performance

From Tom Lane
Subject Re: plan difference between set-returning function with ROWS within IN() and a plain join
Date
Msg-id 13551.1210083430@sss.pgh.pa.us
Whole thread Raw
In response to plan difference between set-returning function with ROWS within IN() and a plain join  (Frank van Vugt <ftm.van.vugt@foxi.nl>)
Responses Re: plan difference between set-returning function with ROWS within IN() and a plain join  (Frank van Vugt <ftm.van.vugt@foxi.nl>)
List pgsql-performance
Frank van Vugt <ftm.van.vugt@foxi.nl> writes:
> db=# explain analyse
>     select sum(base_total_val)
>     from sales_invoice
>     where id in (select id from si_credit_tree(80500007));

Did you check whether this query even gives the right answer?  The
EXPLAIN output shows that 21703 rows of sales_invoice are being
selected, which is a whole lot different than the other behavior.

I think you forgot the alias foo(id) in the subselect and it's
actually reducing to "where id in (id)", ie, TRUE.

            regards, tom lane

pgsql-performance by date:

Previous
From: Justin
Date:
Subject: Re: need to speed up query
Next
From: Tom Lane
Date:
Subject: Re: Seqscan problem