PostgreSQL: преимущества и недостатки отсутствия точной числовой точности - PullRequest
0 голосов
/ 14 сентября 2018

В PostgreSQL 10 я создаю таблицу, содержащую числовой столбец.Я знаю, что значения в этом столбце должны быть точными, но я не уверен, каким будет точный размер окончательных значений.

value NUMERIC

против

value NUMERIC(20, 2)

Что быбудут ли преимущества или недостатки не указывать точность, а не давать ей сколь угодно большую точность?

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Размер диска, требуемый числовым значением, ограничен его масштабом.Если масштаб не указан, предел является максимально возможным масштабом, т.е. 16383

Размер вычисляется как follow :

Числовые значения физически сохраняются безлюбые дополнительные начальные или конечные нули.Таким образом, заявленная точность и масштаб столбца являются максимальными, а не фиксированными распределениями.[...] Фактическое требование к памяти составляет два байта для каждой группы из четырех десятичных цифр плюс служебные данные от трех до восьми байтов.

Так что, если ваши входные значения имеют фиксированный формат, используя произвольно большую точностьили никакой масштаб вообще не будет иметь никакого значения.Однако, если вы получите свое значение с «бесконечным» числом десятичных или бессмысленных десятичных знаков, использование без масштаба потребует больше дискового пространства.

0 голосов
/ 14 сентября 2018

Задание точности может иметь два эффекта для ваших данных:

  1. Округляет значение:

    SELECT 100.005::NUMERIC(20,2) -- 100.01

  2. Вызывает ошибку, если ваше значение слишком велико:

    SELECT 100.005::NUMERIC(3,2) -- ERROR: numeric field overflow

С точки зрения наилучшей практики - я думаю, что это зависит от характера ваших данных.Часто явное лучше, чем неявное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...