PostgreSQL是否缓存函数调用?

时间:2013-12-21 11:28:05

标签: sql postgresql

假设我有一个STABLE SQL函数接受一个参数(函数内部函数对一堆表执行SELECT,但就调用者而言,该函数实际上只是一个黑盒子)。

如果在同一个SELECT语句中使用相同的参数多次调用此函数,PostgreSQL是否足够智能,只能实际调用一次并缓存结果,或者我是否必须使用WITH语句手动执行缓存(公用表)表达式)?

1 个答案:

答案 0 :(得分:8)

PostgreSQL没有用于稳定函数结果的缓存(它没有任何函数结果的缓存)。 PostgreSQL尝试最小化调用次数,但它没有缓存。您可以尝试通过更高的COST属性惩罚这些调用。使用WITH应该是个好主意。