关于sum()求和

数据差不多有百万级,需要求某个字段的和,是整个表都要统计,如果百万级数据,和值大概在1-2亿,这时候是直接用sum()合适还是foreach循环相加合适,我感觉直接用sum()执行时间好久,刚看了下大概118W数据,和值1.5亿,响应时间大概4.24S,而且CPU一直忽高忽低的,愁死人

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

用foreach = 找死

1年前 评论
a3211 (楼主) 1年前
ysnow (作者) 1年前
ysnow (作者) 1年前
a3211 (楼主) 1年前
讨论数量: 9

如果是实时数据的话,建议还是用sum,foreach就不用考虑了。如果是包含一部分历史数据且这些历史数据不会更改,可以弄一个统计表,例如按照月份把每个月的总数等信息用定时任务处理好后都存起来,这样就算是实时数据,只需要考虑已经计算好的历史数据+未计算好的,这样速度就好很多。

1年前 评论
Ranger9527 1年前

追加,我是新手,小学毕业,自学的php,没有专业基础,太多不懂得了

1年前 评论

用foreach = 找死

1年前 评论
a3211 (楼主) 1年前
ysnow (作者) 1年前
ysnow (作者) 1年前
a3211 (楼主) 1年前

用 DB sum 可能要好点。 在查询的时候,就计算出来。

1年前 评论

如果是实时数据的话,建议还是用sum,foreach就不用考虑了。如果是包含一部分历史数据且这些历史数据不会更改,可以弄一个统计表,例如按照月份把每个月的总数等信息用定时任务处理好后都存起来,这样就算是实时数据,只需要考虑已经计算好的历史数据+未计算好的,这样速度就好很多。

1年前 评论
Ranger9527 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!