【发布时间】:2012-02-05 21:27:24
【问题描述】:
您好,我正在使用 DECIMAL 数据类型创建一个非常大的表。从那里开始和增长将有 5000 万行,所以我关心存储。我需要 DECIMAL,因为我需要精确的表示,并且文档很清楚,如果您想要精确的表示,您必须使用 DECIMAL。
mysql 手册对 DECIMAL 存储要求非常清楚,说明:
从 MySQL 5.0.3 开始,DECIMAL 列的值使用二进制格式表示,该格式将九个十进制(以 10 为基数)数字打包成四个字节。每个值的整数和小数部分的存储分别确定。每个九位数字的倍数需要四个字节,而“剩余”数字需要四个字节的一部分。下表给出了多余数字所需的存储空间。
剩余数字字节数
0 0
1 1
2 1
3 2
4 2
http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html
这意味着 DECIMAL(12,4) 需要:
整数部分为 8 个字节,“剩余”部分为 2 个类型,总共 10 个字节。
所以第一个问题是,DECIMAL(18,4) 不会使用相同的 10 字节存储空间吗?如果我想节省存储空间,我需要降低到 DECIMAL(9,4),这不是我的选择。
如果是这样,第二个问题是否知道 mysql 处理 DECIMAL(12,4) 是否比 DECIMAL(18,4) 更有效(内部)?我认为这个问题不一定可以回答,但我想我会试一试!也许有人做了某种基准测试......
谢谢。
不要
【问题讨论】:
标签: mysql