存储和执行复杂计算的最佳方法(MySQL,PHP)

时间:2019-05-31 10:38:41

标签: php mysql

我要对一组数据运行一堆计算。

我有一个包含许多坐标的表,例如:

template_id = S.02.01.02.01, 
row_id : R1010, 
column_id : C1030

这些坐标中的每一个将具有1569834.00的值示例。有许多这样的模板,行,列组合,每个组合都代表一个关键指标示例: assets_holdings 之类的东西。

现在,有些关键指标可能需要进行复杂的计算,例如:

assets_loans_on_policies = (S.02.01.02.01,R0010,C1030) + (S.02.01.02.01,R0020,C1040) + (S.02.01.02.01, R0030,C1040) - (S.02.01.02.01,R0040,C1050) / (S.02.01.02.01,R0050,C1060)

在各种template:row:col组合上有很多这样的计算。

这些模板,行,列和值存储在MySQL表中,请参见下面的结构

--------------------------------------------------------------------
id      value           template_id         row_id      column_id
---------------------------------------------------------------------    
2       123.000         S.02.01.02.01       R0010       C1030
3       4563453.000     S.02.01.02.01       R0010       C0010
4       342342.000      S.02.01.02.01       R0020       C0010
5       12313.000       S.02.01.02.01       R0030       C0010
6       889.000         S.02.01.02.01       R0040       C0010
7       0.000           S.02.01.02.01       R0050       C0010
8       12132.000       S.02.01.02.01       R0060       C0010
9       20546227.000    S.02.01.02.01       R0070       C0010
10      1638667.000     S.02.01.02.01       R0080       C0010

问题是,这可以在MySQL中完成,但是有大量此类坐标和计算,因此查询很快变得复杂且难以维护。

另一种方法也许是将这些计算作为公式存储在MySQL表中,例如:

assets_loans_on_policies = 10 + 12 + 34 - 45 / 27

上面的每个数字都是坐标表中相应行的ID。这种方法的问题是将这些公式存储在表中。公式列将显示以下内容

10 + 12 + 34 - 45 / 27

这里的问题是首先提取单个ID,然后获取相应的行值,然后进行计算。当这些id复杂且具有MAX(value),MIN(value)等时,提取这些id变得更加困难。有些计算非常复杂。

我可以采用其他方法吗?我需要一些指导以进行结构化,因此将来会添加许多此类计算,并且这些计算应该是可维护的。

0 个答案:

没有答案