DECIMAL против INT, какой лучший оптимизированный выбор?

Я уверен, что этот запрос неполный без точного контекста, поэтому я попытаюсь объяснить его, и я постараюсь быть ясным
Мне нужно хранить все данные, представленные на странице в граммах, миллиграммах , микрограммы и килоджоули.

Все эти данные равны 99999,99 г (разница в килоджоулях), поэтому я мог бы использовать DECIMAL(7,2) или DECIMAL(5,2) со старыми версиями MySql.

Тем не менее, я видел на сайте mysql, что тип данных DECIMAL более тяжелый, чем MEDIUMINT (я ошибаюсь?), которого может быть достаточно для хранения данных. пользовательской машине, и мне не нужно их снова хранить, поэтому я сомневаюсь, какой тип данных лучше всего подходит в этом случае.

так какой лучший тип данных в этом случае?


person vitto    schedule 02.12.2009    source источник


Ответы (4)


Одной из целей баз данных является предоставление и обеспечение целостности данных, а также хранение данных в формате, который максимально близок к естественному формату данных, которые необходимо хранить. Имея это в виду, вы не должны пытаться оптимизировать типы данных для ядра базы данных преждевременно (если только вы не выполнили тесты производительности и у вас нет очень веской причины). Вместо этого ваши усилия лучше направить на надлежащее проектирование структур таблиц с правильными отношениями и создание индексов, где это необходимо, чтобы помочь механизму базы данных справиться с объемом и типами данных, которые у вас есть. Вы будете удивлены, сколько данных может обработать механизм БД, если данные нормализованы должным образом, а индексы и отношения созданы там, где это необходимо.

Поэтому рекомендуется использовать тип DECIMAL для хранения десятичных или дробных чисел, таких как цены, дробные количества и т. д.

person Mike Dinescu    schedule 02.12.2009

Сохраняйте данные как есть с максимально возможной точностью. Вы всегда можете обрезать его при выборе.

Вы можете пожалеть, что не сохранили дополнительные данные через год, когда вам понадобится точность.

person Broam    schedule 02.12.2009

Насколько я понимаю, DECIMAL предназначен для точной арифметики с фиксированной точкой, что относительно эзотерическая ветвь численных вычислений. Он используется, когда вы работаете с числами с целой и дробной частью, но когда ошибки, присущие арифметике с плавающей запятой, не могут быть допущены (например, бухгалтерский учет).

Поэтому я предполагаю, что если вы еще не знаете, что вам нужно использовать DECIMAL, вы, вероятно, этого не сделаете.

person Community    schedule 02.12.2009

Учитывая, что вам нужна точность, продолжайте использовать DECIMAL и не используйте типы с плавающей запятой. DECIMAL выполнит преобразования, которые вам пришлось бы сделать, если бы вы использовали MEDIUM int.

Попробуйте как-нибудь прочитать это, почему: http://docs.sun.com/source/806-3568/ncg_goldberg.html

person Liz Albin    schedule 02.12.2009