On Fri, Jun 30, 2017 at 9:32 AM, Mark Dilger <hornschnorter@gmail.com> wrote:
>> On Jun 29, 2017, at 8:55 PM, Mark Dilger <hornschnorter@gmail.com> wrote:
>> Changing myfunc to create a temporary table, to execute the sql to populate
>> that temporary table, and to then loop through the temporary table's rows
>> fixes the problem. For the real-world example where I hit this, that single
>> change decreases the runtime from 13.5 seconds to 2.5 seconds.
>
> Actually, this is wrong. On further review, by the time I had changed the
> function definition, the data in the test server I was querying had likely changed
> enough for the performance to change. That duped me into thinking I had
> found a work-around. I can no longer reproduce any performance improvement
> in this manner.
Also note that temporary tables are yet another thing that doesn't
work with parallel query yet.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company