gpt4 book ai didi

php - php 或 mysql 数据中的计算

转载 作者:行者123 更新时间:2023-11-29 04:26:50 26 4
gpt4 key购买 nike

我在同一条线上遇到过几个问题,但没有一个完全相同。

哪个更好,是在从 MySql 中获取结果(通过连接几个表)后在 PHP 中执行一些基本计算,还是在 MySql 中物理上有另一列存储总数,同时插入一个新行然后检索它。

例如:售出的产品:

Item         Price       Quantity      Discount
Item 1 55 100 10%

上面是一个销售表,价格列是从商品表中联合而来的。基于上述问题,我们可以使用 PHP 获取结果,执行 Price X Quantity X 0.10 或者我们的表可以如下所示:

Item         Price       Quantity      Discount   Amount
Item 1 55 100 10% 4950

现在,完成如此简单的任务,哪种方法更好?

类似问题: Doing Calculations in MySql vs PHP

最佳答案

没有适用于所有情况的一揽子规则。许多因素会影响网站的性能和效率。所以没有单一的“最佳”。

如果你看一下像 Magento 这样的东西,它是双向的。一方面,它有一个完整的 EAV 结构,每条数据都被抽象出来并归一化到 n 级。另一方面,出于性能原因,它还会在平面表中聚合预先计算的值。这包括折扣金额、基础价格、税收数量(以基础和选择的货币计)等。前一种情况在灵 active 和稳健性方面最好,平面表在性能方面更好。

在处理批量计算时,平面表显然会更快,因为所有事情都已经解决了。但正如 kernelpanic 指出的那样,它确实意味着对设置的任何更改都可能需要对每个值进行批量重新计算。对于订单历史等历史数据,您可能不想重新计算人们最终支付的实际金额,但在确定最佳解决方案时确实需要考虑必须这样做的可能性。

如果性能至关重要并且运行计算的成本很高,那么知道您可能需要不时批量刷新这些值可以让您做出是否缓存它的明智决定。

但如果它不是性能关键方面,或者计算代价高昂但不经常运行,则将它们从数据库中移除会更干净,因为它们真正属于应用程序的业务逻辑处理部分,即代码。

同样,定义“最佳”的方法不止一种,因此取决于具体情况。这实际上只是一个平衡要求的问题——速度、清洁度、内存使用、处理器要求、磁盘空间使用、适应开发经理定义的一些任意数据结构的需要——你的决定需要考虑这些因素。

如果没有要解决的现实问题,那么只能进行推测。如果您确实遇到了更复杂的情况,我很乐意查看并提供我的想法。

编辑:根据我自己的观察,在没有启用页面缓存的情况下,一个包含平面数据和超过 20 万个产品的 Magento 目录页面加载时间大约为 10 - 20 秒。当禁用平面数据并使用 EAV 结构时,这将花费几分钟。我现在不在工作,所以手边没有我的分析数据,但这证明了在现实世界的应用程序中没有单一的最佳解决方案。

关于php - php 或 mysql 数据中的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9851998/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com