MySQL不同位数的十进制查询效率
MySQL Decimal query efficiency for different number of digits
我正在尝试使用 MySQL 实现一个 table,条目为 Decimal 数据类型。在 link (http://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html) 中,它表示当我使用十进制存储具有 9 位或更少十进制数字的数字时,无论数字位数是 7、8 还是 9,存储space 将是 4 个字节。
但是,我很好奇如果小数类型的数字位数不同,任何 sql 查询是否会花费不同的时间。
既然都是4个字节,应该是一样的吧?或者会有什么不同?
Values for DECIMAL (and NUMERIC) columns are represented using a
binary format that packs nine decimal (base 10) digits into four
bytes. Storage for the integer and fractional parts of each value are
determined separately. Each multiple of nine digits requires four
bytes, and the “leftover” digits require some fraction of four bytes.
这取决于您的 CPU 和您的硬件配置。现代的 CPU 已经足够聪明了,如果你没有做一些非常大的计算,它应该不会对性能产生太大影响。如果您在 OLTP 中使用它,那么它不会对性能产生太大影响。但是,对于 OLAP,它可能会造成一些性能瓶颈。但那是针对涉及非常复杂的计算的东西。
还要补充一点,在 MySQL 5.0.3 之前,十进制数据类型以字符串格式存储,但后来随着 MySQL 5.1 和更高版本的发布,小数类型存储在 binary format 因此,如果我们不进行非常复杂的计算,它应该不会影响性能。
我正在尝试使用 MySQL 实现一个 table,条目为 Decimal 数据类型。在 link (http://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html) 中,它表示当我使用十进制存储具有 9 位或更少十进制数字的数字时,无论数字位数是 7、8 还是 9,存储space 将是 4 个字节。
但是,我很好奇如果小数类型的数字位数不同,任何 sql 查询是否会花费不同的时间。
既然都是4个字节,应该是一样的吧?或者会有什么不同?
Values for DECIMAL (and NUMERIC) columns are represented using a binary format that packs nine decimal (base 10) digits into four bytes. Storage for the integer and fractional parts of each value are determined separately. Each multiple of nine digits requires four bytes, and the “leftover” digits require some fraction of four bytes.
这取决于您的 CPU 和您的硬件配置。现代的 CPU 已经足够聪明了,如果你没有做一些非常大的计算,它应该不会对性能产生太大影响。如果您在 OLTP 中使用它,那么它不会对性能产生太大影响。但是,对于 OLAP,它可能会造成一些性能瓶颈。但那是针对涉及非常复杂的计算的东西。
还要补充一点,在 MySQL 5.0.3 之前,十进制数据类型以字符串格式存储,但后来随着 MySQL 5.1 和更高版本的发布,小数类型存储在 binary format 因此,如果我们不进行非常复杂的计算,它应该不会影响性能。