Re: Do function calls the cached?
От | Daniel Caldeweyher |
---|---|
Тема | Re: Do function calls the cached? |
Дата | |
Msg-id | CADVnD3BPmVSkTGKQHE4Ssahdjw8-HmiGP7YR-vVC0sAZfU4oNg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Do function calls the cached? ("David G. Johnston" <david.g.johnston@gmail.com>) |
Список | pgsql-general |
Thanks David,
Lateral did the trick:
CREATE VIEW with_keywords AS
SELECT x,y,z, keywords.a, keywords.b, keywords.c
FROM large_table l, LATERAL extract_keywords(l.*) keywords(a,b,c)
Regards,
Daniel
On Wed, Aug 31, 2016 at 6:46 AM, David G. Johnston <david.g.johnston@gmail.com> wrote:
select x,y,z, (extract_keywords(l.*)).*[...]Does this mean the function gets called three time?Yes.(function_call(...)).*syntax is problematic. You should avoid it via one of two options.LATERAL (new way, preferred)orCTE (old way)In the CTE version you make the call in the CTE but do "(col).*" in the main query. This way the function is only called once to generate a composite output, then the composite output is exploded.With LATERAL the system is smart enough to do it the right way.David J.
В списке pgsql-general по дате отправления: