mysql decimal 类型的统计的问题

2020-11-09 09:57:46 +08:00
 singerll

现在有个需求,我想扫描下数据库表中字段信息(最大最小值、不为空行数),比如 user 表有 id,name,money 三个字段,实现 sql 如下:

select count(字段) from 表名 ;

select count(*) from 表名 where 字段 is not null ;

现在发现其他字段都没问题,只有 decimal 类型的字段,无法进行 count,因数据量很大,sum 等函数也不适合,问下大佬们有其他的方法吗?

3443 次点击
所在节点    MySQL
9 条回复
basstk
2020-11-09 11:52:42 +08:00
个人认为数据库最好只存储数据,少参与计算.你可以先把值取出来,然后在后端里计算.
singerll
2020-11-09 12:08:40 +08:00
@basstk #1 我这个不是业务需求,是历史库的统计需求,仅此一次,没必要写程序,而且数据量太大,程序也顶不住啊。
wysnylc
2020-11-09 13:08:12 +08:00
@singerll #2 分批多次
zhangysh1995
2020-11-09 15:21:09 +08:00
挺迷的,count(字段)是行数,数据类型应该没什么影响的。
singerll
2020-11-09 15:58:09 +08:00
@zhangysh1995 #4 很奇怪,max 和 min 函数好像也不能用
singerll
2020-11-09 15:58:56 +08:00
@wysnylc #3 光磁盘 io 和网络带宽都能让这个程序跑两周。。。。
zarte
2020-11-10 09:54:01 +08:00
建议检查下程序,或者发下实际的具体 sql 。你发现的问题点应该是错的。
zhangysh1995
2020-11-11 17:49:43 +08:00
@singerll 所以你这么问题有啥后续吗?有切入点了吗?
singerll
2020-11-12 07:24:03 +08:00
@zhangysh1995 #8 放弃了,本来就是领导忽然想到的一次性统计需求,写个脚步太费时间就放弃了。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/723076

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX