不同位数的MySQL十进制查询效率

不同位数的MySQL十进制查询效率,mysql,decimal,Mysql,Decimal,我正在尝试使用MySQL实现一个条目为Decimal数据类型的表。在link()中,它表示当我使用decimal存储一个小数位数为9或更少的数字时,不管数字的位数是7、8或9,存储空间都是4字节 然而,我很好奇,如果十进制类型的数字有不同的位数,任何sql查询是否需要不同的时间 因为它需要相同的4个字节,所以应该是相同的吗?或者会有什么不同吗?报告说: 十进制(和数字)列的值使用 将九位十进制(以10为基数)数字压缩成四位的二进制格式 字节。每个值的整数和小数部分的存储是 另行决定。九位数的每一

我正在尝试使用MySQL实现一个条目为Decimal数据类型的表。在link()中,它表示当我使用decimal存储一个小数位数为9或更少的数字时,不管数字的位数是7、8或9,存储空间都是4字节

然而,我很好奇,如果十进制类型的数字有不同的位数,任何sql查询是否需要不同的时间

因为它需要相同的4个字节,所以应该是相同的吗?或者会有什么不同吗?

报告说:

十进制(和数字)列的值使用 将九位十进制(以10为基数)数字压缩成四位的二进制格式 字节。每个值的整数和小数部分的存储是 另行决定。九位数的每一倍数需要四位数 字节,“剩余”数字需要四个字节的一部分

这将取决于您的CPU和硬件配置。现代的CPU足够聪明,如果你没有做一些非常大的计算,它应该不会对性能有太大的影响。如果您在OLTP中使用它,那么它不会对性能产生太大影响。然而,在OLAP的情况下,它可能会造成一些性能瓶颈。但这是一个涉及到非常复杂的计算的问题


另外,在MySQL 5.0.3之前,十进制数据类型是以字符串格式存储的,但后来MySQL 5.1和更高版本的十进制数据类型是以字符串格式存储的,因此,如果我们不进行非常复杂的计算,它应该不会影响性能。

这个问题在其当前形式中过于广泛。通常,存储大小的1字节差异对执行时间的影响可以忽略不计。对于小型数据集,这并不重要,对于大型数据集。。如果这是你能做的最后一件事,我会在你面前鞠躬。另外,4字节与4字节的比较是一样的,当这些字节上存储了7位和9位的小数时。@Pred谢谢你的回答,我只是好奇,我只是想在遵循最佳实践的同时设计一个系统。@lvaroGonzález,是的,这是存储大小,而不是执行时间。仅供参考,存储大小与4字节相同。最佳做法是设计一个满足业务需求并能够在现有硬件上运行的系统。您可以进行过早的优化,但在大多数情况下,这种微观优化并不是真正必要的。使用最适合您的数据的数据类型。如果您需要4位精度,并且您在10万范围内,十进制(10,4)就可以了。@Alvarogonzález它永远不会是10或更多,因为十进制的存储方式是每9位需要4个字节,其余的则需要不同的字节数。在本例中,7、8、9都需要4个字节。请查看链接上的表格以获得进一步澄清。谢谢你!谢谢你的回答。让我研究一下什么是OLTP和OLAP哈哈。顺便问一下,你想对这些文档说些什么?在问这个问题之前,我仔细阅读了文档,它似乎与您的答案无关。@seokhoonley:-这只是为了突出我后来更新的一点,即十进制数据类型现在以二进制格式存储。很抱歉给你带来了困惑。