相关疑难解决方法(0)

声明函数波动性 IMMUTABLE 会损害性能吗?

Postgres 函数声明为波动性分类VOLATILESTABLEIMMUTABLE。众所周知,该项目对内置函数的这些标签非常严格。并且有充分的理由。突出的例子:表达式索引只允许IMMUTABLE函数并且那些必须是真正不可变的以避免错误的结果。

用户定义的函数仍然可以按照所有者的选择自由声明。手册建议:

为了获得最佳优化结果,您应该使用对它们有效的最严格的波动率类别来标记您的函数。

...并添加了大量可能因波动率标签不正确而出错的事情列表。

尽管如此,在某些情况下,伪造不变性是有道理的。大多数情况下,当您知道该函数实际上在您的范围内是不可变的。例子:

除了对数据完整性的所有可能影响之外,对性能的影响是什么?人们可能认为声明一个函数IMMUTABLE只会对性能有益。是这样吗?

声明函数波动性会IMMUTABLE 损害性能吗?

让我们假设当前的 Postgres 10 来缩小范围,但所有最近的版本都很有趣。

postgresql performance functions

9
推荐指数
1
解决办法
1540
查看次数

什么时候使用存储过程/用户定义函数?

我对 SP(存储过程)和 UDF(用户定义函数)的使用感到困惑。通常,也可以在数据库之外的程序中编写代码。

是否有任何一般建议来决定何时使用它们?

postgresql stored-procedures functions

4
推荐指数
1
解决办法
9419
查看次数