Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
十进制mysql和存储空间?_Mysql_Decimal - Fatal编程技术网

十进制mysql和存储空间?

十进制mysql和存储空间?,mysql,decimal,Mysql,Decimal,根据我对mysql文档中的DECIMAL手册的理解,它指出九位数的每一个倍数需要4个字节,以下是剩余的数字 number of digits leftover | bytes 0 | 0 1 | 1 2 | 1 3 | 2 4

根据我对mysql文档中的
DECIMAL
手册的理解,它指出九位数的每一个倍数需要4个字节,以下是剩余的数字

number of digits leftover  |   bytes

0                          |   0
1                          |   1
2                          |   1
3                          |   2
4                          |   2
5                          |   3
6                          |   3
7                          |   4
8                          |   4
那么一个
十进制(12,6)
将等于总存储中的6个字节

我知道小数部分总是等于6位数字,因为零被填充,但是整数部分对于
DECIMAL(12,6)
列不是这样,存储是按行还是按列定义进行赋值

范例

    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?
或者如果声明为
(12,6)
,它将始终是6个字节吗

编辑

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

对于mysql 5.1(及更高版本),它将存储划分为整数部分和小数部分,并为可能最大的数字留出存储空间。所以对于十进制(12,6),整数部分需要3个字节,小数部分需要3个字节。它看起来不像是根据值减少存储空间;无论值是什么,它都会将内存放在一边

您可以在此处查看文档:

1:178.999999//3位为整数部分,因此总计为5字节(正确) 2:0.880000//1位表示整数部分,因此总计为4字节?(错误) 3 123456.123456//6位数字等于6字节?(正确)

说明: 剩余位数字节数 0 0

11

2.1

3.2

4.2

5.3

6.3

7 4

8 4

9的所有倍数将包含4个字节

因此,0.880000将取0表示整数部分,取3表示小数部分,因此0+3=3

DECIMAL(12,6)