Performance PostgreSQL:创建两个函数还是向现有函数添加一个参数?

Performance PostgreSQL:创建两个函数还是向现有函数添加一个参数?,performance,postgresql,user-defined-functions,postgresql-performance,Performance,Postgresql,User Defined Functions,Postgresql Performance,假设我有一个不平凡的查询,从一个给定的名字片段返回一个地方列表,例如“Rio”将同时返回“Rio de Janeiro”和“Rio Negro”。但在一个地方,我需要一个简短的版本,如“里约内格罗/BR”,而在另一个地方,我需要“里约内格罗(里约内格罗)(地名录,亚马逊,巴西)” PostgreSQL的最佳解决方案是什么:创建两个较小的函数还是一个较大的函数 较大的函数将从两个不同的源调用,每次运行两个类似的SQL请求中的一个,两个请求都很大 也许如果我把它分成两个不同的函数,它会变得更快?如果

假设我有一个不平凡的查询,从一个给定的名字片段返回一个地方列表,例如“Rio”将同时返回“Rio de Janeiro”和“Rio Negro”。但在一个地方,我需要一个简短的版本,如“里约内格罗/BR”,而在另一个地方,我需要“里约内格罗(里约内格罗)(地名录,亚马逊,巴西)”

PostgreSQL的最佳解决方案是什么:创建两个较小的函数还是一个较大的函数

较大的函数将从两个不同的源调用,每次运行两个类似的SQL请求中的一个,两个请求都很大


也许如果我把它分成两个不同的函数,它会变得更快?

如果只需要调用其中一个函数,两个专用函数通常比一个组合函数更快。如果必须同时调用两个专用函数,则相反:执行单个组合函数通常会更快。这取决于您的实际用例

可能会出现一些罕见的情况,例如,如果每个会话只调用该函数几次。然后,对于保存了查询计划的小函数,重用相同的组合函数可能会更快。(PL/pgSQL函数在同一会话中重复使用查询计划。SQL函数不重复)。对于两个单独的函数,开销可能更高。但这是学术上的一个例外。相关的:


要添加到函数中的参数是什么?如果我只需要在两个选项中选择,它可能是一个布尔值。但对于未来,我可能会有两个以上,然后我会使用短int或char。