我有以下每晚运行的查询。
perform distinct fn_debtor_summary( clientacc) from client where not clientacc is null;
但是因为函数很慢,当我调试时我喜欢调试一小部分数据,所以我使用以下查询。
perform distinct fn_debtor_summary( clientacc) from client where not clientacc is null limit 10;
但是我发现这个限制不起作用,它会针对整个表运行该功能。
为什么会发生这种情况以及如何在不创建临时表的情况下针对一小部分数据运行它的任何想法?
答案 0 :(得分:0)
在应用限制之前,PostgreSQL在PERFORM查询的每一行上运行函数。因此,即使它只返回10,它仍将运行该函数超过10次。
解决方案是使用子查询,有趣的是PERFORM不起作用,但SELECT也可以工作。
select fn_debtor_summary( limitclients.clientacc) from (select clientacc from client limit 1) limitclients;