powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / подскажите с разработкой структуры БД - float vs DECIMAL и COMPUTED BY
9 сообщений из 9, страница 1 из 1
подскажите с разработкой структуры БД - float vs DECIMAL и COMPUTED BY
    #39974336
GrigoriyFomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго вечера гуру FB.
Хочу рефакторить свою новую "разработку" и раз есть такая возможность - оптимизирую метаданные.
вопрос нумбер 1.
надо хранить деньги и количество товара - какое поле будет более быстрое? float, double или decimal/numeric? первые два как я понимаю - нативные типы данных мат.копроцессора. дадут ли они фору стандартным decimal?
посему вопрос конкретно в вин.реализации ФБ - для математики - какой тип лучше использовать? точности хватит 4 знака после запятой, суммы вполне земные (не космодром строим).

и вопрос нумбер 2 - computed by поля. Хочется добавить их в структуру таблиц, чтоб лишний раз не дергать справочники. если я их не буду в селекте использовать (например, не нужны они конкретно тут, но на будущее можно их использовать) будут они вносить тормоза? как ФБ их обрабатывает, если они в селекте не перечичслены?
...
Рейтинг: 0 / 0
подскажите с разработкой структуры БД - float vs DECIMAL и COMPUTED BY
    #39974342
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFomin,

для начала
http://www.ibase.ru/files/firebird/Firebird_3_0_Language_Reference_RUS.pdf
со страницы 28 (типы данных).

float можно вообще не использовать, слишком низкая точность. double для денег или количества товара - это ... гм, оригинально.
Тут впору посоветовать почитать
Неочевидные особенности вещественных чисел
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374

Про computed by ответ простой. select туда можно вставлять, но крайне не рекомендуется. Потому что вместо этого надо писать нормальные запросы (джойны и т.п.). Вложенный запрос на каждое значение computed by будет скорее всего вызываться каждый раз. 1000 записей - тысяча запросов.
На микроскопической БД вы замедления может и не заметите, но как только наполните БД нормальными данными - всё начнет жутко тормозить.
Если в селекте вычисляемый столбец не указан, то он вычисляться не будет.
Но - я видел разные системы, и самая аховая в этом плане была с вызовами в computed by селективных хранимых процедур.
Как только в запросе указывалось такое вычисляемое поле, скорость падала в 3-10 раз и план запроса становился ужасного размера.
Понятно, что разработчики наворотили, и сами виноваты, но в этом плане лучше думать ДО, а не ПОТОМ.
"полная автоматизация метаданных" - это прикольно только для начинающих.
...
Рейтинг: 0 / 0
подскажите с разработкой структуры БД - float vs DECIMAL и COMPUTED BY
    #39974344
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFomin,

да, в статье "Неочевидные особенности..." как бы про Дельфи, а не про ФБ, но всё изложенное на 100% в отношении типов single = float, double = double precision.
И, в комплект к той статье обычно идет
Загадки округления
http://www.delphikingdom.com/asp/viewitem.asp?catalogID=1217
...
Рейтинг: 0 / 0
подскажите с разработкой структуры БД - float vs DECIMAL и COMPUTED BY
    #39974400
AltHasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFomin,

Почему не хотите хранить агрегаты, можно их организовать например с помощью тригеров таблиц? Ну или в крайнем случае создать view и по ней select-ить ваши данные.

Удачи !
...
Рейтинг: 0 / 0
подскажите с разработкой структуры БД - float vs DECIMAL и COMPUTED BY
    #39974755
GrigoriyFomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
насчет вычисляемых полей - убедили, буду в запросе их просчитывать где надо. А насчет вещественных полей - удивился, что ФБ хранит их в целочисленном формате. Думал, математику на сопроцессор скидывают.
...
Рейтинг: 0 / 0
подскажите с разработкой структуры БД - float vs DECIMAL и COMPUTED BY
    #39974756
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFominДумал, математику на сопроцессор скидывают.
еще раз перечитайте документацию. dobuble precision это вещественное. a numeric(15,2) - уже целое.
естественно, что вещественные числа считаются через сопроцессор. Но дело-то не в этом. А в точности, округлении и прочем.
...
Рейтинг: 0 / 0
подскажите с разработкой структуры БД - float vs DECIMAL и COMPUTED BY
    #39974760
GrigoriyFomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,

прочитал еще раз. Действительно. но для будущего, как я понимаю, перспективнее использовать decimal? стандартнее, что ли?
...
Рейтинг: 0 / 0
подскажите с разработкой структуры БД - float vs DECIMAL и COMPUTED BY
    #39974761
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFomin,

decima типа устаревшее. Более часто использование numeric(x,y). В определенных диапазонах они не отличаются, но лучше всё-таки numeric.
...
Рейтинг: 0 / 0
подскажите с разработкой структуры БД - float vs DECIMAL и COMPUTED BY
    #39988874
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

авторdouble для денег или количества товара - это ... гм, оригинально.
Тут впору посоветовать почитать
Неочевидные особенности вещественных чисел

Есть очевидные свойства и не очевидные, которые не описаны в руководстве, но всплывают в практике.

Если в той же Delphi использовать столбец с плавающей точкой для подсчета каких либо данных определеного формата (для пример денег), то необходимость вводить форматирование такого столбца вещь обязательная. В том же Decimal(x,y) или Numeric(x,y) это делать уже не обязательно. Плюсом к этому является и округление значений.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / подскажите с разработкой структуры БД - float vs DECIMAL и COMPUTED BY
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]