C++ map处理批量数据性能问题探讨

wsl_1025 2017-06-07 08:22:27
1. 背景:有一张表里有300万的数据,表字段有36个,根据业务需要,要根据里面的12个字段(都是字符串)进行归并,即这12个字段完全一样就会将它们的一个字段(charge)相加。最终将已经归并好的所有记录输出到文件里。
2. 方案:我现在的做法是select出来后,for循环处理每条记录。
A. 将每条记录的12个字段拼接成串,作为key,该条记录指针作为value,放入到map中,
B. 然后每条记录进来时都到map里查找,如果发现key已经存在则累加charge;
C. 如果没找到key值就push到map里。
3. 问题:怎样才能提高其效率。因为按照目前的情况,300万数据要跑10多个小时。
...全文
592 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ma100 2017-07-25
  • 打赏
  • 举报
回复
1. 你有数据库吗 2. 没数据库的话试试unordered_map
  • 打赏
  • 举报
回复
最多几分钟~
赵4老师 2017-06-08
  • 打赏
  • 举报
回复
引用 1 楼 FancyMouse 的回复:
好好用sql写sum和group by。
对呀!
bravery36 2017-06-08
  • 打赏
  • 举报
回复
我觉得map跑300万数据肯定不用10小时,一定是你select的时候慢了。你select是带条件的吗?查询条件要事先建表索引。
FancyMouse 2017-06-08
  • 打赏
  • 举报
回复
好好用sql写sum和group by。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧