powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Какой тип выбрать : numeric vs float
10 сообщений из 35, страница 2 из 2
Какой тип выбрать : numeric vs float
    #35443080
davydoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вещественные числа, приходящие извне, приходят в виде с фиксированной точкой. Например: все проценты приходят в виде, например, 12.345, денежные величины в виде - 123445.33 (две цифры после запятой). Т.е. количество цифр для различных вещественных величин фиксировано. Идея использовать numeric была в том, чтобы (1) хранить только те цифры, которые приходят извне, (2) уменьшить объем БД, (3) как следствие, увеличить скорость запросов.

Что касается смешения доменов, то это все в теории хорошо. Проблема появляется тогда, когда на стороне клиента все алгоритмы написаны с использованием чисел с плавающей запятой. Да и не нужны точные представления чисел для алгоритмов.

Первым делом, я проектирую БД без привязки к клиенту. Из этих соображений считаю, что numeric наилучшим образом подходит для целей задачи. Второй вопрос - как быть с существующим клиентом, который до этого брал данные из БД, в которой поля вещественных чисел были типа float.
...
Рейтинг: 0 / 0
Какой тип выбрать : numeric vs float
    #35443082
davydoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv - большое спасибо за пример кода. Сейчас буду смотреть.
...
Рейтинг: 0 / 0
Какой тип выбрать : numeric vs float
    #35443188
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
davydoff пишет:

> количество цифр для различных вещественных величин фиксировано. Идея
> использовать numeric была в том, чтобы (1) хранить только те цифры,
> которые приходят извне, (2) уменьшить объем БД, (3) как следствие,
> увеличить скорость запросов.

Это - достаточно плохая идея. Да, ускорени за счет уменьшения размера будет,
но незначительное.

> Что касается смешения доменов, то это все в теории хорошо. Проблема
> появляется тогда, когда на стороне клиента все алгоритмы написаны с
> использованием чисел с плавающей запятой. Да и не нужны точные
> представления чисел для алгоритмов.

Это - согласен.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Какой тип выбрать : numeric vs float
    #35443203
davydoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор> количество цифр для различных вещественных величин фиксировано. Идея
> использовать numeric была в том, чтобы (1) хранить только те цифры,
> которые приходят извне, (2) уменьшить объем БД, (3) как следствие,
> увеличить скорость запросов.

Это - достаточно плохая идея. Да, ускорени за счет уменьшения размера будет,
но незначительное.

А в чем эта идея плоха? Можете подробнее прокомментировать?
...
Рейтинг: 0 / 0
Какой тип выбрать : numeric vs float
    #35443215
davydoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Также добавлю, что одна из целей использования numeric в моем случае - хранение точных представлений полученных чисел. В целом, если не обращать внимание на клиента, то numeric - лучшее решение, IMHO.
...
Рейтинг: 0 / 0
Какой тип выбрать : numeric vs float
    #35443218
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
davydoff пишет:

> А в чем эта идея плоха? Можете подробнее прокомментировать?

Ускорения особого не будет. Ну, уменьшится ваша таблица на 10%.
Ну и что ? Да настройка fill factor на больше таблицу ужать может.
Ну и в данном конкретном случае, как мы вроде бы выяснили уже,
у вас таблица станет больше, потому как numeric шире double/float.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Какой тип выбрать : numeric vs float
    #35443234
davydoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем так. Я говорил о представлении numeric в клиенте. С-cтруктура CS_NUMERIC занимает 35 байт. Но в БД это не так. Там используется ровно столько байт, сколько нужно для хранения максимального числа. Я создал таблицу с полями указанных ниже типов и вызвал sp_help <имя_таблицы>. Вот результат:

Код: plaintext
1.
2.
3.
4.
5.
6.
type             Length (bytes)
-----------      ---
float                8
numeric(13,2)   7
numeric(5,2)     4
numeric(9,0)     5
int              4


Видно, что для процентов, содерж. 5 цифр (numeric(5,2)) выигрыш в объеме места на диске в 2 раза. С filling factor согласен, но это уже другая тема.
...
Рейтинг: 0 / 0
Какой тип выбрать : numeric vs float
    #35443298
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
davydoff пишет:

> Не совсем так. Я говорил о представлении numeric в клиенте. С-cтруктура
> CS_NUMERIC занимает 35 байт. Но в БД это не так. Там используется ровно

Вот это не знаю. В БД не заморачивался проверять.

Возможно. Тогда не всё так плохо.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Какой тип выбрать : numeric vs float
    #35443301
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
davydoff пишет:
> Не совсем так. Я говорил о представлении numeric в клиенте. С-cтруктура
> CS_NUMERIC занимает 35 байт. Но в БД это не так. Там используется ровно
> столько байт, сколько нужно для хранения максимального числа. Я создал

Блин, а чего вы тогда мучаетесь ? И я тоже торможу.
Храните на клиенте в текстовом виде ! И лишних данных не будет храниться,
и преобразовать в DOUBLE/FLOAT просто очень. И потери точности не будет,
до тех пор, пока в double это не запихнёте.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Какой тип выбрать : numeric vs float
    #35443320
davydoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет. В клиенте ничего хранить не надо. Данные берутся клиентом из БД в виде CS_NUMERIC. Потом их надо преобразовать в double и использовать. Текстового представления не требуется. Прошу прощения, если иногда невнятно выражаюсь.
...
Рейтинг: 0 / 0
10 сообщений из 35, страница 2 из 2
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Какой тип выбрать : numeric vs float
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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