我正在尝试使用MySQL实现一个带有条目为Decimal数据类型的表。在链接(http://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html)中,它表示当我使用十进制来存储一个小数位数为9或更少的数字时,无论位数为7,8或9,存储空间都是4字节。
但是,如果十进制类型的数字具有不同的位数,我很好奇是否有任何sql查询需要不同的时间。
由于它需要相同的4个字节,它应该是相同的吗?或者会有什么不同吗?
答案 0 :(得分:2)
DECIMAL(和NUMERIC)列的值使用a表示 二进制格式,将九个十进制(基数为10)的数字打包成四个 字节。存储每个值的整数和小数部分 单独确定。九位数的每个倍数需要四位数 字节,“剩余”数字需要四个字节的一小部分。
这取决于您的CPU和硬件配置。现代CPU足够智能,如果你没有做一些非常大的计算,它不应该影响性能。如果您在OLTP中使用它,那么它不会对性能产生太大影响。但是,在OLAP的情况下,它可能会产生一些性能瓶颈。但这涉及到涉及非常复杂的计算的事情。
另外,只是添加,在MySQL 5.0.3之前,十进制数据类型以字符串格式存储,但稍后发布MySQL 5.1及更高版本后,DECIMAL类型存储在binary format中,所以如果我们不这样做非常复杂的计算它不应该影响性能。