Хранение маленьких десятичных знаков MySQL - PullRequest
2 голосов
/ 24 октября 2011

Мне нужно хранить большой объем маленьких десятичных чисел (3 цифры до запятой, 6 цифр после запятой).

Из моего понимания спецификации это потребует 8 байтов. Я мог бы сохранить число как целое число, для которого требуется всего 4 байта, и преобразовать после извлечения с использованием фиксированного масштабного коэффициента.

Есть ли лучшая альтернатива вместо использования int, я не могу легко сделать какую-либо арифметику с числами?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 16 ноября 2012

Я не думаю, что это правильно.DECIMAL(9,6) должен сделать эту работу.В соответствии с инструкцией mysql 5.1 потребуется 2 байта для 3 цифр и 3 байта для 6 цифр.ИМХО, это 5 байтов, а не 8 байтов.Поэтому вам не потребуется намного больше памяти, чем с целочисленным «взломом», который вы предложили.Я бы определенно пошел с десятичной дробью в вашем случае.

0 голосов
/ 24 октября 2011

Нет, это не будет работать, если вы используете тип данных "int" MySQL.Это потому, что целые числа не могут обрабатывать десятичную точность.

В соответствии с вашим вопросом вы должны использовать « Типы данных с фиксированной точкой », которые принесут вам пользу в больших вычислениях и денежных данных.В MySQL требуемый тип данных - "DECIMAL", и вы можете прочитать больше об этом здесь .

Правильный синтаксис в вашем случае будет "DECIMAL (9, 6)", где 9означает, что значения могут быть сохранены в сумме до 9 цифр, из которых 6 цифр после десятичной точки и 3 цифры до десятичной.

Надеюсь, это поможет.

...