|
|
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. numeric(4,0) - храниться как smallint, что не мешает при суммировании превышать его разрядность и менять её на INTEGER, то же самое можно сделать и для больших точностей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2014, 20:21:23 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, "храни тся ". http://www.ibase.ru/devinfo/ibp_60_exact_num_fs.html SUM and AVG are exact if the subject row has an exact numeric type and the scaled sum fits in 64 bits: otherwise we raise an overflow exception. SUM and AVG are never computed internally using floating point arithmetic unless the data type of the column is approximate numeric. Если я верно понимаю фразу scaled sum fits in 64bits, результат sum и avg для exact numeric всегда 64бит. И это следует также из того, что prepare должно вернуть описание типов возвращаемого результата до выполнения запроса. А динамически это описание (после или во время выполнения запроса) не может меняться (хотя у меня тоже была такая мысль). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2014, 20:34:20 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Симонов Денисnumeric(4,0) - храниться как smallint, что не мешает при суммировании превышать его разрядность и менять её на INTEGER Вот только она меняется на INTEGER (а скорее всего сразу на BIGINT) ещё до начала суммирования, а не в процессе. Движок просто берёт тип наибольшей доступной разрядности. Что будет когда таким типом станет NUMBER(38)?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2014, 20:39:38 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
kdv, хм... тогда DS прав в том что производительность упадёт, т.к sum придётся возвращать 128 битное значение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2014, 20:43:35 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
DS> Что будет когда таким типом станет NUMBER(38)?.. Дим, насколько я понимаю, это будет во-первых, редкая операция и сугубо на совести тех, кто выбрал этот тип (скорее всего, небольшое падение скорости их вполне устроит), во-вторых, на производительности всех остальных операций она не скажется (не должна). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2014, 20:50:31 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустамсугубо на совести тех, кто выбрал этот тип Ты не врубаешься: этот тип будет выбираться всегда для агрегатных функций и почти всегда - для вычислений более чем в одно действие. Независимо от желания прокладки. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2014, 20:58:35 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
DS> этот тип будет выбираться всегда для агрегатных функций Разве? Впрочем, да, наверное. Ну тогда ССЗБ. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2014, 20:59:39 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
однако что меня удивляет, так это то, что точность NUMERIC в Oracle, MS SQL, DB 2, PosgreSQL превышает 18. Неужели у них всё так плохо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2014, 21:04:35 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
на всякий случай - нашел вот такую статью http://accu.org/index.php/articles/1849 вдруг поможет (вообще). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2014, 21:22:20 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисНеужели у них всё так плохо? Таблоид не даст соврать, типы PLS_INTEGER и иже с ним изобретены не от хорошей жизни. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2014, 21:39:49 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТы не врубаешься: этот тип будет выбираться всегда для агрегатных функций и почти всегда - для вычислений более чем в одно действие.Ты уже написал соответствующий патч? Иной раз безапелляционность просто поражает. Как же мы жили когда процы были 16/32 битные, а "длинная" арифметика была уже тогда? Что помешает поглядеть на операнды и, для всей мелкоты до 64 бит взять за основу 64 бита, а если попался хотя бы один 128 битный, то уже не торопясь "топать по длинной дорожке". ну т.е. sum(numeric_18_0) ,будет работать как раньше, а к примеру sum(numeric_18_0)+cast(0 as numeric(30)) уже в 128 битах, ну или sum(cast(numeric_18_0 as numeric(30)). Это уже просто особенности реализации, к тому же сдается мне и в современных компиляторах должны быть подпитка для таких чисел (правда здесь я грешным делом очень давно не интересовался). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 08:35:18 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Ivan_PisarevskyЧто помешает поглядеть на операнды и, для всей мелкоты до 64 бит взять за основу 64 бита Не спасет (2^64-1)+(2^64-1) = ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 16:04:50 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal(2^64-1)+(2^64-1) = ?Ivan_Pisarevskyскладывать пока влазит в базовые 64 бита, как не влезло, то вываливать исключение.Кому не нравится, кастует к более длинному типу и получает искомое, возможно чутка подождав. Сейчас же такая ситуация возможна? Возможна. Кто-то от этого умер? нет, никто не умер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 16:33:19 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Ivan_PisarevskyКому не нравится, кастует к более длинному типу Ну и зачем тогда вообще длинные числа, если уже сейчас можно получить тот же результат, скастовав в DOUBLE?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 16:40:06 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНу и зачем тогда вообще длинные числа, если уже сейчас можно получить тот же результат, скастовав в DOUBLE?..Есть эстеты кому нравится точность. каст к даблу гарантированно приведет к потере точности. ты предлагаешь, например, деньги хранить в дабле? это как-то не совсем правильно. Вопрос был, как я понимаю, в том, что те кому нужно 19 и более значащих чиселок, готовы подождать, но чиселки получить все и не округленные. Основная масса(и я в их числе) готовы довольствоваться 18 и ждать не хотят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 16:48:03 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Ivan_Pisarevskyты предлагаешь, например, деньги хранить в дабле? Не хранить. Считать. Я слышал, есть такие странные личности, которые что-то считают на стороне сервера... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 17:08:52 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
kdvНа всякий случай - 3/2 = 1.5 (NickDee) не поддерживаю Я как-то пытался перейти с fastscript на remobjects pascalscript. Очень удивился что в pascalscript int/int = int, и это нормально в картине мира разработчиков. Я было начал переделывать уже имеющиеся скрипты и кастовать первый операнд к Double, типа Код: pascal 1. вместо Код: pascal 1. Но быстро понял, что даже мне лень так писать, не то что моим клиентам (они инженеры, а не программеры). Тут снижается читабельность, появляется возможность ошибиться, неудобно пользователям. Еле выбил у них переключалку на нормальное деление, но по дефолту они всё равно оставили int/int = int. Вот вам пример из реальной жизни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 17:25:56 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
NickDee, когда ты уже перестанешь позиционировать свой опыт в других языках программирования на SQL? Пойми это другой язык и стандарт у него другой нравится это или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 17:31:56 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Дело не в том, что это другой ЯП, стандарт и пр. Дело в том, что большая часть этого опыта никак с SQL не соотносится, а местами и нелогична. Вот тут про Int/int - в SQL так? Нет. Ну так чего этот бред сюда приводить, что доказывать? Что в жизни бывают глупости? Ну, бывают. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 17:36:53 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНе хранить. Считать.А разница? бухи за "копейки" всю душу вынут. и какая разница на каком этапе ты прое*** точность? когда хранил или когда считал? Dimitry SibiryakovЯ слышал, есть такие странные личности, которые что-то считают на стороне сервера...если мне надо на клиента отдать одну чиселку коя является суммой 1000 чиселок, ты предлагаешь притащить всю тыщу на клиента и там сложить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 17:42:55 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Ivan_Pisarevskyесли мне надо на клиента отдать одну чиселку коя является суммой 1000 чиселок, ты предлагаешь притащить всю тыщу на клиента и там сложить? Для сложения длинные числа не нужны. Имеющихся 64 бит хватит на посчитать всю валюту в россии. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 17:46:30 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисNickDee, когда ты уже перестанешь позиционировать свой опыт в других языках программирования на SQL? Пойми это другой язык и стандарт у него другой нравится это или нет. Вот у C++ есть стандарт. Его все придерживаются и получают бонусы от совместимости. У SQL тоже есть "стандарт". Его придерживаются так, что совместимости практически нет. Я бы сказал так, что стандарт SQL является стандартом только по названию, но не по факту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 17:49:58 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovИмеющихся 64 бит хватит на посчитать всю валюту в россии. не хватит. проблемы с нехваткой double и bigint именно у контор, которые в россии считают деньги. Только российские, или разные, без понятия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 17:50:54 |
|
||
|
долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovДля сложения длинные числа не нужны.Ты так уверенно говоришь за всех, что мне как-то неловко... Треуголку поправьте, Бонапарт Виссарионович. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 17:50:56 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38666897&tid=1563520]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
423ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 748ms |

| 0 / 0 |
