计算一个表的最佳方法是什么,其中许多列是从同一个表中的其他列计算出来的,并且公式以复杂的方式相互建立。
如果您不关心性能,您可以简单地使用自己的更新语句计算每一列:
update x set b1 = a1 + a2;
update x set b2 = a3 * b1;
update x set b3 = a4 * b2;
...
或者,如果您手动扩展公式,您可以在一次更新中完成所有操作:
update x set
b1 = a1 + a2,
b2 = a3 * (a1 + a2),
b3 = a4 * (a3 * (a1 + a2));
这里的问题是这些公式可能会变得庞大且难以更改和调试。
Postgres(或者甚至是一般的 SQL)中是否有某种方法可以在这些情况下同时具有性能和可维护性?
这是我希望我能做的事情:
update x set
b1 = _b1,
b2 = _b2,
b3 = _b3
with
_b1 = a1 + a2,
_b2 = a3 * _b1,
_b3 = a4 * _b2;
我有一个可行的解决方案,其中公式在具有多个返回值的函数中定义,但这在其他一些方面相当不灵活,所以我正在寻找替代方案。