假设我在一个数组中有 50 个对象,每个对象都有属性 cost
。此外,所有对象都在 MySQL 数据库中。
循环遍历所有对象并添加其cost
成员,还是进行查询(例如 SELECT sum(cost) FROM ...
)会更有效吗?
编辑:已建立PDO数据库对象。
取决于数组大小、是否已经建立了数据库连接等。一般来说,我会选择循环部分,因为它只有 50 个项目。然而,最终的答案是你可以为自己做的基准。
一般来说,让MySQL为你做这件事要高效得多。但是,如果它实际上只有 50 个对象,则其他因素(例如与数据库的网络连接)可能会发挥作用。但是,编写假设应用程序无法缩放的代码从来都不是一个好主意;所以使用MySQL :-)
SUM 查询。 放下手。 如果它不比在应用程序代码中循环遍历数组更有效,那么您需要做一些数据库调整。 :)
求和查询。这将比你自己做更有效率。
无论如何,它们将足够相似以至于无关紧要,这意味着您会想要使用总和,因为它有时很快,有时大致相同。没有理由冒险自己执行代码。
我尝试使用一个包含 php 中 74601 条记录的表,发现 sql SUM 查询比在 php 中循环大约快 10 倍
在此处查看结果