Re: Stored procedure returning row or resultset
От | Tom Lane |
---|---|
Тема | Re: Stored procedure returning row or resultset |
Дата | |
Msg-id | 17131.1034615852@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: Stored procedure returning row or resultset (Richard Huxton <dev@archonet.com>) |
Ответы |
Re: Stored procedure returning row or resultset
|
Список | pgsql-sql |
Richard Huxton <dev@archonet.com> writes: > Have you looked at marking f1() etc cachable? This means Postgresql > will only call the function once for each parameter-set. Unfortunately that's not true at all, or at least not helpful for this problem. The cachable attribute was poorly named, because it leads people to think that PG *will* cache function results, as opposed to *could* cache function results. A possible workaround is along the lines of SELECT f1, f1 + f2, f1 + f2 + f3 FROM (SELECT f1() as f1, f2() as f2, f3() as f3 LIMIT 1) tmp; Note the LIMIT 1 ... without that, the planner may flatten the two levels of SELECT together, eliminating the savings you're trying for. (I don't recall offhand all the conditions that govern flattening of a sub-select, but I'm pretty sure a sub-LIMIT will prevent it.) regards, tom lane
В списке pgsql-sql по дате отправления: