假设我有一个非常简单的查询来返回给定名称片段中的地点列表,例如“里约热内卢”将返回“里约热内卢”和“里约内格罗”。但在一个地方我需要一个像“Rio Negro / BR”这样的短版本,而在另一个地方我会有“Rio Negro(地名,亚马逊,巴西)”。
PostgreSQL中的最佳解决方案是:创建两个较小的函数还是一个更大的函数?
更大的函数将从两个不同的源调用,每次运行两个类似的SQL请求之一,两者都很大。
也许如果我将它分成两个不同的功能,它会变得更快?
答案 0 :(得分:0)
如果你只需要调用其中一个,那么两个专用函数通常比一个组合函数更快。如果你必须调用两个专用函数,那么反过来说:那么执行单个组合函数通常会更快。这取决于您的实际使用情况。
可能存在罕见的极端情况,例如,如果每个会话仅调用该函数几次。然后,对于保存查询计划的小函数重用相同的组合函数可能会更快。 (PL / pgSQL函数在同一个会话中重用查询计划.SQL函数没有)。对于两个单独的功能,开销可能更昂贵。但这是一个学术上的例外。相关: