mysql和DECIMAL存储空间?

2023-12-08

根据我对手册的理解DECIMAL在 mysql 文档中,它指出九个数字的每个倍数需要 4 个字节,其余数字如下;

number of digits leftover  |   bytes

0                          |   0
1                          |   1
2                          |   1
3                          |   2
4                          |   2
5                          |   3
6                          |   3
7                          |   4
8                          |   4

So a decimal(12,6)总存储量等于 6 个字节吗?

我知道小数部分总是等于 6 位数字,因为填充了零,但整数部分对于DECIMAL(12,6)列 存储是按行还是按列定义来评估?

Example

    DECIMAL(12,6)
 1: 178.999999 // 3 digits for integer part so total would be 5 bytes?
 2: 0.880000 // 1 digits for integer part so total would be 4 bytes?
 3  123456.123456 // 6 digits would equal 6 bytes?

或者如果声明它总是 6 字节(12,6)?

EDIT

也是一个十进制声明为(5,5)将需要 6 个字节来存储,并且十进制声明为(12,6)也需要 6 个字节来存储。既然存储大小不是问题,那么大小的差异会影响 mysql 检索或索引列的方式吗?


对于 MySQL 5.1(及更高版本),它将整数部分和小数部分的存储分开,并为最大可能的数字腾出存储空间。因此,对于 DECIMAL(12,6),整数部分需要 3 个字节,小数部分需要 3 个字节。看起来它并没有根据值减少存储;无论值是多少,它都会将内存放在一边。

您可以在此处查看文档:

MySQL 十进制手册页

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql和DECIMAL存储空间? 的相关文章

随机推荐