Re: Trying to pull up EXPR SubLinks
От | Andy Fan |
---|---|
Тема | Re: Trying to pull up EXPR SubLinks |
Дата | |
Msg-id | CAKU4AWoQ=SWSwQacjQf99cEdZXgHYLpw7iQMmAiERmE9Z3uuWw@mail.gmail.com обсуждение исходный текст |
Ответ на | Trying to pull up EXPR SubLinks (Richard Guo <guofenglinux@gmail.com>) |
Ответы |
Re: Trying to pull up EXPR SubLinks
|
Список | pgsql-hackers |
On Fri, Feb 28, 2020 at 2:35 PM Richard Guo <guofenglinux@gmail.com> wrote:
Hi All,Currently we will not consider EXPR_SUBLINK when pulling up sublinks and
this would cause performance issues for some queries with the form of:
'a > (SELECT agg(b) from ...)' as described in [1].
So here is a patch as an attempt to pull up EXPR SubLinks. The idea,
which is based on Greenplum's implementation, is to perform the
following transformation.For query:
select * from foo where foo.a >
(select avg(bar.a) from bar where foo.b = bar.b);
we transform it to:
select * from foo inner join
(select bar.b, avg(bar.a) as avg from bar group by bar.b) sub
on foo.b = sub.b and foo.a > sub.avg;
Glad to see this. I think the hard part is this transform is not *always*
good. for example foo.a only has 1 rows, but bar has a lot of rows, if so
the original would be the better one. doss this patch consider this problem?
ThanksRichard
В списке pgsql-hackers по дате отправления: