| From: | Tender Wang <tndrwang(at)gmail(dot)com> |
|---|---|
| To: | Richard Guo <guofenglinux(at)gmail(dot)com> |
| Cc: | Alexandra Wang <alexandra(dot)wang(dot)oss(at)gmail(dot)com>, David Rowley <dgrowleyml(at)gmail(dot)com>, Pg Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Robert Haas <robertmhaas(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Paul A Jungwirth <pj(at)illuminatedcomputing(dot)com>, Ashutosh Bapat <ashutosh(dot)bapat(dot)oss(at)gmail(dot)com> |
| Subject: | Re: Remove inner joins based on foreign keys |
| Date: | 2026-06-22 10:42:47 |
| Message-ID: | CAHewXNku=us+nRLYFdx_Xc8C=AUCMyPMYG32=Bggw0cytWCT3g@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Hi all,
Richard Guo <guofenglinux(at)gmail(dot)com> 于2026年5月26日周二 05:01写道:
> (Attached v5 is the split version of v4, plus addressing Alex's two
> comments. 0002 is still the lock-based predicate from v4, posted as
> the concrete reference for option (B); it can be swapped for whichever
> approach the gap-handling discussion settles on.)
>
(The patches need to be rebased due to commit 9a60f295bcb18)
I had a plan as follows:
postgres=# explain select fk_child.* from fk_parent1 left join t1 on
true inner join fk_child on fk_child.p1_id = fk_parent1.id;
QUERY PLAN
----------------------------------------------------------------------
Nested Loop Left Join (cost=0.00..55.21 rows=2260 width=84)
-> Nested Loop (cost=0.00..0.01 rows=1 width=84)
Join Filter: (fk_parent1.id = fk_child.p1_id)
-> Seq Scan on fk_parent1 (cost=0.00..0.00 rows=1 width=4)
-> Seq Scan on fk_child (cost=0.00..0.00 rows=1 width=84)
-> Seq Scan on t1 (cost=0.00..32.60 rows=2260 width=0)
(6 rows)
The inner join between fk_parent1 and fk_child can be removed.
But now they are separated by an outer-join boundary, so
inner_join_is_removable() returns false.
If we support this kind of inner-join removal, it needs to remove not
only ref_rel but also the outer-join relid.
Do we plan to support this kind of inner-join removal now?
--
Thanks,
Tender Wang
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Pavel Borisov | 2026-06-22 10:44:33 | Re: Add SPLIT PARTITION/MERGE PARTITIONS commands |
| Previous Message | Tatsuo Ishii | 2026-06-22 10:23:19 | Re: Heads Up: cirrus-ci is shutting down June 1st |