Re: A problem about partitionwise join
| От | Etsuro Fujita |
|---|---|
| Тема | Re: A problem about partitionwise join |
| Дата | |
| Msg-id | CAPmGK14kuyh9JciSN-2hDb7cDf6H300S3t07pLTbfkxaCO5BHw@mail.gmail.com обсуждение исходный текст |
| Ответ на | Re: A problem about partitionwise join (Richard Guo <riguo@pivotal.io>) |
| Ответы |
Re: A problem about partitionwise join
|
| Список | pgsql-hackers |
Hi, On Tue, Aug 27, 2019 at 4:57 PM Richard Guo <riguo@pivotal.io> wrote: > Check the query below as a more illustrative example: > > create table p (k int, val int) partition by range(k); > create table p_1 partition of p for values from (1) to (10); > create table p_2 partition of p for values from (10) to (100); > > If we use quals 'foo.k = bar.k and foo.k = bar.val', we can generate > partitionwise join: > > # explain (costs off) > select * from p as foo join p as bar on foo.k = bar.k and foo.k = bar.val; > QUERY PLAN > ----------------------------------------- > Append > -> Hash Join > Hash Cond: (foo.k = bar.k) > -> Seq Scan on p_1 foo > -> Hash > -> Seq Scan on p_1 bar > Filter: (k = val) > -> Hash Join > Hash Cond: (foo_1.k = bar_1.k) > -> Seq Scan on p_2 foo_1 > -> Hash > -> Seq Scan on p_2 bar_1 > Filter: (k = val) > (13 rows) > > But if we exchange the order of the two quals to 'foo.k = bar.val and > foo.k = bar.k', then partitionwise join cannot be generated any more, > because we only have joinclause 'foo.k = bar.val' as it first reached > score of 3. We have missed the joinclause on the partition key although > it does exist. > > # explain (costs off) > select * from p as foo join p as bar on foo.k = bar.val and foo.k = bar.k; > QUERY PLAN > ----------------------------------------- > Hash Join > Hash Cond: (foo.k = bar.val) > -> Append > -> Seq Scan on p_1 foo > -> Seq Scan on p_2 foo_1 > -> Hash > -> Append > -> Seq Scan on p_1 bar > Filter: (val = k) > -> Seq Scan on p_2 bar_1 > Filter: (val = k) > (11 rows) I think it would be nice if we can address this issue. Best regards, Etsuro Fujita
В списке pgsql-hackers по дате отправления: