请教个问题 MYSQL8.0以后 DECIMAL 是否需要额外两个字节存储符号和小数点?
- CREATE TABLE `test_decimal` (
- `TOTAL` decimal(20,6) DEFAULT NULL,
- `MONERY` decimal(10,2) DEFAULT NULL,
- `ID` int NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (`ID`)
- ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
- insert into dba.test_decimal (TOTAL,MONERY) VALUES(99999999999999.88,70000000.09);
- insert into dba.test_decimal (TOTAL,MONERY) VALUES(-99999999999999.88,-70000000.09);
- SELECT * FROM dba.test_decimal;
- # TOTAL MONERY ID
- 99999999999999.880000 70000000.09 1
- -99999999999999.880000 -70000000.09 2
复制代码 按照官方文档计算
decimal类型的数据存储形式是,将每9位十进制数存储为4个字节,不够9位按下面表计算
- Leftover Digits Number of Bytes
- 0 0
- 1-2 1
- 3-4 2
- 5-6 3
- 7-9 4
复制代码
字段decimal(20,6),20-6=14,其中小数部分为6 就对应上表中的3个字节,而整数部分为14,14-9=5,就是4个字节再加上表中的3个字节
3+4+3=10个字节
符号和小数点 是不是要额外加2个字节 ?
官方文档没有找到说明
|