Hi Jeff,

Thanks for the update and clarification. I will look to see a better
alternative to resolve this twice execution of same plan.

On Wed, Sep 20, 2017 at 10:16 PM, Jeff Janes <jeff.ja...@gmail.com> wrote:

> On Tue, Sep 19, 2017 at 7:31 PM, monika yadav <monika.1234ya...@gmail.com>
> wrote:
>
>> Hi All,
>>
>> I didn't understand why same sub plan for the sub query executed two
>> times? As per the query it should have been executed only once.
>>
>> Can someone please explain this behaviour of query execution ?
>>
>
>
> The sum_bid at the end of the query is an alias for the entire subselect,
> so it not entirely surprising that it gets interpolated twice. it is just
> kind of unfortunate from a performance perspective.
>
> The query I originally gave is equivalent to this query:
>
>
>  select
>         aid,
>         (select sum(bid) from pgbench_branches
>             where bbalance between -10000-abalance and 1+abalance
>         ) as sum_bid
>         from pgbench_accounts
>         where aid between 1 and 1000
>         group by aid
>         having (select sum(bid) from pgbench_branches where bbalance
> between -10000-abalance and 1+abalance ) >0;
>
>
> In my originally query I just wrapped the whole thing in another select,
> so that I could use the alias rather than having to mechanically repeat the
> entire subquery again in the HAVING section.  They give identical plans.
>
> Cheers,
>
> Jeff
>

Reply via email to