2016-05-10 23 views
0

我有我每晚運行的以下查詢。Postgres:執行統計和限制

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; 

但是我發現極限不起作用,它對整個表運行函數。

任何想法爲什麼會發生這種情況,以及如何在不創建臨時表的情況下針對一小部分數據運行它?

+2

您需要將限制傳遞給函數內的定義。 –

回答

0

PostgreSQL在應用限制之前在PERFORM查詢的每一行上運行函數。所以即使通過它只返回10,它仍然會運行10次以上的功能。

解決方案是使用子查詢,有趣的是PERFORM不起作用,但SELECT也可以。

select fn_debtor_summary(limitclients.clientacc) from (select clientacc from client limit 1) limitclients;