关于sum()求和

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

用foreach = 找死

1周前 评论
a3211 (楼主) 1周前
萧瑟 (作者) 1周前
萧瑟 (作者) 1周前
a3211 (楼主) 1周前
讨论数量: 9

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

1周前 评论
Siege 1周前

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

1周前 评论

用foreach = 找死

1周前 评论
a3211 (楼主) 1周前
萧瑟 (作者) 1周前
萧瑟 (作者) 1周前
a3211 (楼主) 1周前

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

1周前 评论

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

1周前 评论
Siege 1周前

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