MySQL 十进制内存使用情况(有符号 v 无符号)

标签 mysql decimal

我了解 MySQL 十进制数的内存存储要求(例如,DECIMAL(5,2) 需要 2 个字节用于 3 个整数,1 个字节用于小数。但我注意到小数也可以是有符号或无符号的。

对于诸如 TINYINT 之类的数字,范围会根据它是有符号(-128 到 127)还是无符号(0-255)而变化。那么我的问题是,如果小数是有符号的还是无符号的,小数的内存使用量是否会发生变化? -999.99 到 999.99 会使用与 000.00 到 999.99 相同的内存吗?

最佳答案

Would -999.99 to 999.99 use the same memory as 000.00 to 999.99?

简短回答:是的。

更长的答案:

  • 小数点左边的数字和右边的数字都被认为是整数。
  • 左边的有一个标志,但不占用任何额外空间。
  • 每组(左边或右边)9 位数字适合 4 个字节;小于9占用ceil(N/2)个字节。

一个简单的经验法则:“DECIMAL(m,n) 占用 m/2 个字节。”它并不总是准确的,但非常接近。

我认为 DECIMAL 的最后一次重大变化是在 5.0.5 中。

关于MySQL 十进制内存使用情况(有符号 v 无符号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32830125/

相关文章:

php - 加入两个mysql表并在php中填充一个数组

php - MySQL:有索引和小文件排序更好还是没有索引和文件排序更好?

C++判断一个数是否为整数

python - 在Python中以最大精度打印十进制数字而不带尾随零的最佳方法

Python Pandas : get average number of decimal

mysql联合查询,每个联合上都有单独的别名

mysql - 组合两个查询并使用 HAVING

mysql - 从 MySQL 数据库中按最小分数获取行

Python和DynamoDB十进制。不精确

python - 为什么 '0.2 + 0.1' 显示为 '0.30000000000000004' ?