CREATE TABLE test (
price DECIMAL(13,6) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
INSERT INTO test VALUE(9999999.999999);
SELECT length(price) FROM test WHERE price = 9999999.999999;
Output: 14
Как можно видеть размер данного поля равен 14 байтам, то есть на одну цифру (включая точку) отводится по 1 байту. Хотя в документации написано, что в MySQL 8 тип DECIMAL является упакованным, то есть целая и дробная часть хранятся как целые числа. То есть данное поле должно весить 3 + 3 = 6 байт (2^24 = 16 777 216).
Может есть какой-то режим?