SUM 查询或循环遍历对象数组并对数据成员求和是否更有效


Would a SUM query or looping through an array of objects and summing a data member be more efficient?

假设我在一个数组中有 50 个对象,每个对象都有属性 cost 。此外,所有对象都在 MySQL 数据库中。

循环遍历所有对象并添加其cost成员,还是进行查询(例如 SELECT sum(cost) FROM ...)会更有效吗?

编辑:已建立PDO数据库对象。

取决于数组大小、是否已经建立了数据库连接等。一般来说,我会选择循环部分,因为它只有 50 个项目。然而,最终的答案是你可以为自己做的基准。

一般来说,让MySQL为你做这件事要高效得多。但是,如果它实际上只有 50 个对象,则其他因素(例如与数据库的网络连接)可能会发挥作用。但是,编写假设应用程序无法缩放的代码从来都不是一个好主意;所以使用MySQL :-)

SUM 查询。 放下手。 如果它不比在应用程序代码中循环遍历数组更有效,那么您需要做一些数据库调整。 :)

求和查询。这将比你自己做更有效率。

无论如何,它们将足够相似以至于无关紧要,这意味着您会想要使用总和,因为它有时很快,有时大致相同。没有理由冒险自己执行代码。

我尝试使用一个包含 php 中 74601 条记录的表,发现 sql SUM 查询比在 php 中循环大约快 10 倍

在此处查看结果