你好,我正在使用DECIMAL数据类型创建一个非常大的表格,它将从5000万行开始增长,所以我关心存储。我需要使用DECIMAL来获得精确的表示,文档清楚地说明如果您需要精确的表示,必须使用DECIMAL。
MySQL手册对DECIMAL存储要求非常明确,如下所示:
从MySQL 5.0.3开始,DECIMAL列的值使用二进制格式表示,该格式将9个十进制(基数为10)数字打包成4个字节。每个值的整数和小数部分的存储空间是分别确定的。每九个数字需要四个字节,而“剩余”的数字则需要四个字节的一部分。多余数字的存储需求由以下表格给出。
剩余数字 字节数量
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(18,4)更有效地处理DECIMAL(12,4)?我认为那个问题并非一定能够回答,但我想试一试!也许有人已经做过某种基准测试...
谢谢。
唐