为了账号安全,请及时绑定邮箱和手机立即绑定

mysql varchar(38) 统计问题

mysql varchar(38) 统计问题

PHP
守着星空守着你 2019-03-11 13:21:19
数据库有个 doneNum 的字段,表示完成数量。当初设计为 varchar(38),是考虑到这个进度问题。 现在有个需求,需要根据某个条件分组,然后对 doneNum 进行求和,如果直接用 sum(doneNum)求和,结果变成了科学计数法,有可能导致进度损失,而如果放在程序中,遍历求和,效率太低了。 请教大家,有没有别的解决方案?
查看完整描述

3 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

项目中,有两种解决方案:

  1. 依旧使用varchar(38)来存储,汇总在程序中实现。 PHP使用BCMath,可以保证精度不会丢失。
  2. 使用decimal(20,18)来存储,这样方便对账,通过SQL就可以对账,而不需要使用程序来统计。
查看完整回答
反对 回复 2019-03-18
?
慕容森

TA贡献1853条经验 获得超18个赞

量不大的话,直接改数据库字段类型,原始内容写脚本处理一下。

量大的话,可以选择预处理吧,在需求一定不变的情况下,定时处理计算出来,临时存放结果。

查看完整回答
反对 回复 2019-03-18
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

先完成紧急的业务需求,之后在重新弄个int(38)的字段,因为本身这个就该弄成整数的,再去填充数值,而没必要去弄个varchar ,或者你直接给varchar添加个索引

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 572 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信