|
|
|
Какой тип выбрать : numeric vs float
|
|||
|---|---|---|---|
|
#18+
Вещественные числа, приходящие извне, приходят в виде с фиксированной точкой. Например: все проценты приходят в виде, например, 12.345, денежные величины в виде - 123445.33 (две цифры после запятой). Т.е. количество цифр для различных вещественных величин фиксировано. Идея использовать numeric была в том, чтобы (1) хранить только те цифры, которые приходят извне, (2) уменьшить объем БД, (3) как следствие, увеличить скорость запросов. Что касается смешения доменов, то это все в теории хорошо. Проблема появляется тогда, когда на стороне клиента все алгоритмы написаны с использованием чисел с плавающей запятой. Да и не нужны точные представления чисел для алгоритмов. Первым делом, я проектирую БД без привязки к клиенту. Из этих соображений считаю, что numeric наилучшим образом подходит для целей задачи. Второй вопрос - как быть с существующим клиентом, который до этого брал данные из БД, в которой поля вещественных чисел были типа float. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2008, 17:49 |
|
||
|
Какой тип выбрать : numeric vs float
|
|||
|---|---|---|---|
|
#18+
MasterZiv - большое спасибо за пример кода. Сейчас буду смотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2008, 17:50 |
|
||
|
Какой тип выбрать : numeric vs float
|
|||
|---|---|---|---|
|
#18+
davydoff пишет: > количество цифр для различных вещественных величин фиксировано. Идея > использовать numeric была в том, чтобы (1) хранить только те цифры, > которые приходят извне, (2) уменьшить объем БД, (3) как следствие, > увеличить скорость запросов. Это - достаточно плохая идея. Да, ускорени за счет уменьшения размера будет, но незначительное. > Что касается смешения доменов, то это все в теории хорошо. Проблема > появляется тогда, когда на стороне клиента все алгоритмы написаны с > использованием чисел с плавающей запятой. Да и не нужны точные > представления чисел для алгоритмов. Это - согласен. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2008, 19:10 |
|
||
|
Какой тип выбрать : numeric vs float
|
|||
|---|---|---|---|
|
#18+
автор> количество цифр для различных вещественных величин фиксировано. Идея > использовать numeric была в том, чтобы (1) хранить только те цифры, > которые приходят извне, (2) уменьшить объем БД, (3) как следствие, > увеличить скорость запросов. Это - достаточно плохая идея. Да, ускорени за счет уменьшения размера будет, но незначительное. А в чем эта идея плоха? Можете подробнее прокомментировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2008, 19:32 |
|
||
|
Какой тип выбрать : numeric vs float
|
|||
|---|---|---|---|
|
#18+
Также добавлю, что одна из целей использования numeric в моем случае - хранение точных представлений полученных чисел. В целом, если не обращать внимание на клиента, то numeric - лучшее решение, IMHO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2008, 19:41 |
|
||
|
Какой тип выбрать : numeric vs float
|
|||
|---|---|---|---|
|
#18+
davydoff пишет: > А в чем эта идея плоха? Можете подробнее прокомментировать? Ускорения особого не будет. Ну, уменьшится ваша таблица на 10%. Ну и что ? Да настройка fill factor на больше таблицу ужать может. Ну и в данном конкретном случае, как мы вроде бы выяснили уже, у вас таблица станет больше, потому как numeric шире double/float. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2008, 19:43 |
|
||
|
Какой тип выбрать : numeric vs float
|
|||
|---|---|---|---|
|
#18+
Не совсем так. Я говорил о представлении numeric в клиенте. С-cтруктура CS_NUMERIC занимает 35 байт. Но в БД это не так. Там используется ровно столько байт, сколько нужно для хранения максимального числа. Я создал таблицу с полями указанных ниже типов и вызвал sp_help <имя_таблицы>. Вот результат: Код: plaintext 1. 2. 3. 4. 5. 6. Видно, что для процентов, содерж. 5 цифр (numeric(5,2)) выигрыш в объеме места на диске в 2 раза. С filling factor согласен, но это уже другая тема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2008, 19:59 |
|
||
|
Какой тип выбрать : numeric vs float
|
|||
|---|---|---|---|
|
#18+
davydoff пишет: > Не совсем так. Я говорил о представлении numeric в клиенте. С-cтруктура > CS_NUMERIC занимает 35 байт. Но в БД это не так. Там используется ровно Вот это не знаю. В БД не заморачивался проверять. Возможно. Тогда не всё так плохо. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2008, 21:09 |
|
||
|
Какой тип выбрать : numeric vs float
|
|||
|---|---|---|---|
|
#18+
davydoff пишет: > Не совсем так. Я говорил о представлении numeric в клиенте. С-cтруктура > CS_NUMERIC занимает 35 байт. Но в БД это не так. Там используется ровно > столько байт, сколько нужно для хранения максимального числа. Я создал Блин, а чего вы тогда мучаетесь ? И я тоже торможу. Храните на клиенте в текстовом виде ! И лишних данных не будет храниться, и преобразовать в DOUBLE/FLOAT просто очень. И потери точности не будет, до тех пор, пока в double это не запихнёте. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2008, 21:11 |
|
||
|
Какой тип выбрать : numeric vs float
|
|||
|---|---|---|---|
|
#18+
Да нет. В клиенте ничего хранить не надо. Данные берутся клиентом из БД в виде CS_NUMERIC. Потом их надо преобразовать в double и использовать. Текстового представления не требуется. Прошу прощения, если иногда невнятно выражаюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2008, 21:43 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=35443203&tid=2011476]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
186ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 547ms |

| 0 / 0 |
