我有一个字段要保留 2 位小数,我是按照 decimal(4,2)来存,还是乘以 100,按照 int 来存,返回给使用者的时候在做个转换。目的是 decimal(4,2)占了 8bytes,int 才 4bytes, 我这个表有 10 来个 decimal 的字段。
1
opengps Sep 23, 2020 via Android
其实,对于你的数据规模来讲,未必需要在乎这 2 个字节的节省
建议你先评估下数据规模有多大,是否真的需要省空间,然后才考虑是否可以用 cpu 换硬盘 |
2
opengps Sep 23, 2020 via Android
换句话说,硬盘比 CPU 便宜,一般推荐存储上选用最方便的数据结构。
你硬盘紧张就把表设计的紧凑点,CPU 紧张就尽量少做运算 |
3
wangritian Sep 23, 2020
我是乘以 100 存整数了,感觉做统计计算时比浮点数速度会快一点
|
4
coderluan Sep 23, 2020
你不说具体场景和目的, 那就是都行.
|
5
securityCoding Sep 23, 2020
int/long , 来自互金公司的经验
|
6
redtea Sep 23, 2020 via iPhone
起码乘 10000,否则哪天改成保留 4 位,那就太麻烦了。
|
8
wysnylc Sep 23, 2020
你猜 decimal 为什么要被发明出来?
|
9
keepeye Sep 23, 2020
涉及到钱的最好存整数
|
10
justseemore Sep 23, 2020
@securityCoding 同来自前互金公司的经验 decimal 18,6 bcmath 处理
|
11
IvanLi127 Sep 23, 2020 via Android
哪天换算错了就完了,还是存 decimal 吧
|
12
mxT52CRuqR6o5 Sep 23, 2020 via Android
要看具体业务的
|
13
xuanbg Sep 23, 2020
decimal 就是干这个的
|
14
May725 Sep 23, 2020 via iPhone
考虑具体业务、预估数据规模、以及将来可能的需求变化,综合考虑吧
|
15
reus Sep 23, 2020 via Android
用 decimal 不需要记得换算,不记得换算的话,可能会有百倍的损失。
当然选 decimal,存储很贵吗?你省下的存储,都变成了潜在的风险,有代价的。 |
16
KarlChen2015 Sep 23, 2020
显然选择 decimal
如果一个新人不知道✖️100 的设计,后果不堪设想 |
17
winglight2016 Sep 23, 2020
@KarlChen2015 我想起之前在 v2 上就有个实习生发了一个帖子说自己计算汇率忘记这个*100 的操作,给公司造成了上千万的损失。。。
|
18
InkStone Sep 23, 2020
不需要极限压榨性能和存储的话,肯定是怎么直观怎么来,不要添加额外的思维负担
|
19
daozhihun Sep 23, 2020
曾经做过的某负责处理钱的模块都是存的 decimal 。当然存 long/int 也可以(建议乘以 10000 或者 1000000 ),可以提升一点性能,但个人认为现在的处理能力不用考虑那点性能,个人还是偏好 decimal
|
21
dr1q65MfKFKHnJr6 Sep 23, 2020
不管什么场景, 直接按类型存吧。
decimal 发明出来 不就是为了处理浮点数的? |
22
Veneris Sep 23, 2020
以微信和美团的数据结构看,都是以分做单位。
|
23
newmlp Sep 23, 2020
建议 decimal,int 容易出 bug,到处都要换算,万一哪里忘了找起来也麻烦
|
24
F281M6Dh8DXpD1g2 Sep 23, 2020 via iPhone
跟钱有关的不用 decimal 是真的心大
|
25
lululau Sep 23, 2020 via iPhone
int*100 是空间和时间兼得吧,缺点是需要自己换算倍数关系,但是从运行效率上讲,int*100 应该比 bigdecimal 快吧
|
26
sheeta Sep 23, 2020
看看腾讯,支付宝它们是怎么做的不就行了呗
|