|
|
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
З.Ы. ничего личного со всем уважением, конечно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2008, 19:03 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
MSDN Значения типа datetime хранятся внутри компонента SQL Server 2005 Database Engine в виде 4-байтовых целых чисел. Первые четыре байта содержат количество дней до или после даты отсчета: 1 января 1900 года. Дата отсчета является системной датой. Вторые четыре байта содержат текущее значение времени, представленного в виде трехсотых долей секунды, прошедших после полуночи. Тип данных smalldatetime используется для хранения дат и значений времени с меньшей точностью, чем datetime. В компоненте Database Engine значения типа smalldatetime хранятся в виде 2-байтовых целых чисел. Первые два байта содержат количество дней, прошедших с 1 января 1900 года. В двух следующих байтах хранится количество минут, прошедших после полуночи. Значения типа datetime округляются в большую сторону до 0,000, 0,003 или 0,007 долей секунд как показано в таблице, представленной ниже. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2008, 19:05 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
Вы быквально предугадали ссылку которую я хотел прокомментировать :) Имеем 2 4-х байтного поля, как целочисленные. тип INT, если не ошибаюсь, это 32 битное знаковое значение, т.е. 4 байта. впрочем, в примере можно взять bigint - 8 байт. т.е. 2 по 4 байта. выполнение запроса с приведением, должно заполнить младшую и старшую часть, т.к. они по определению в GETDATE() не нулевые. Однако, видно что идет потеря младшей части в случае с INT (аналогично и с BIGINT), в тоже время, для чисел с плавающей запятой такого не наблюдается (это видно из запроса). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2008, 19:14 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
set nocount on declare @dt datetime declare @i int select @dt = GETDATE(), @i = 0 while @i < 999 begin select @i+=1 select @dt = DATEADD(MS, 3, @dt) if @dt <> cast(cast(@dt as float) as datetime) select 'хе-хе', @dt, cast(cast(@dt as float) as datetime) end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2008, 19:25 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
Это только подтверждает высказывание в MSDN что точность кратна 3,33 миллисекунды и не более, сравнивать два числа с плавающей запятой нет смысла (допустимо только неравенство). 4 байта это 4294967296 миллисекунд, в сутках их 86400000, т.е. значительно меньше и следовательно, целочисленное значение позволяет хранить полностью. Ограничения возникают если используется плавающий формат, тогда может гарантироваться только ограниченная разрядность и следовательно погрешность (кратность) декларированная MS вполне объяснима как и погрешность что даёт приведенный Вами код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2008, 19:47 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
А вообще, тема конечно интересная.. успели и бревнами пробросаться и т.д. … :) Но к топику наверно не относится, как думаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2008, 19:52 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
Зайцев Фёдор Специально для тех, кто хоть на секунду сделает допущение, что г-н немой знает больше бревна Зато теперь никто не сделает допущение что Вы уважаете собеседников :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 00:31 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
SergSuperЗато теперь никто не сделает допущение что Вы уважаете собеседников :( Несущих чушь? Ни капельки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 01:25 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
Зайцев ФёдорSergSuperЗато теперь никто не сделает допущение что Вы уважаете собеседников :( Несущих чушь? Ни капельки. но Вы же тоже чушь написали - DateTime - это вещественный тип, просто он не "ЧПЗ" блин, ну неужели это действительно такое удовольствие - написать гадость в отношении кого-то? немой, Вы не учитываете что не все биты из 4-х байт используются ну и потом попытайтесь объяснить смысл от использования плавающей точки для хранения времени ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 11:09 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
SergSuperDateTime - это вещественный тип SergSuperблин, ну неужели это действительно такое удовольствие - написать гадость в отношении кого-то? нет, не испытываю. кстати, ваша очередь SergSuperDateTime - это вещественный тип правильно ли я понял, 2 целых числа = вещественный тип? а 3 целых числа? а строка + целое + строка + строка - тоже вещественный тип ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 11:20 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
немой 1.Это Вы о binary и varbinary(n) ?? но это не битовые матрицы, и над этими типами не определены побитовые операторы. 2.По крайней мере, в 2005 этого нет. 3.Очень интересно, буду признателен, если покажите как это можно сделать не прибигая к циклам, курсорам и т.д. 4.А заодно, и пример работы с битовыми матрицами (дп просто - включить 2 бит например) 5.Это Merge. 6.я так же смеюсь над тем, что это больается в проектах как пятое колесо.. Конечно все решается.. Но.. поствте сервер не с тою локалью.. или еще что - и вы обречены на постоянную конвертацию.. Да же если все нормально, простое сравнеие по полю с типом DateTime - геморой, к которому все привыкли. 1. Нет, это я о типе bit 2. в 2008 - есть (будем сравнивать, что в какой версии мускула есть,а чего - нет? ;) ) 3. insert ... select ... union. Insert ... values() () () 4. select 8|2 5. Тоже есть. 6. вы знаете, есть множество способов изобретательно выкручиваться из тех ситуаций, в которые сами же не менее изобретательно попали. За это девелоперов регулярно бьют по пальцам железной линейкой - но, увы и ах, помогает это достаточно слабо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 11:58 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
немой, так вы, любезный, еще и тип datetime любите поприводить к int? А потом жалуетесь, мол "геморой"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 11:59 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
Зайцев Фёдорправильно ли я понял, 2 целых числа = вещественный тип? а 3 целых числа? а строка + целое + строка + строка - тоже вещественный тип ? интересно, а если бы MS не написала(вполне могла ведь) как она хранит DataTime - было бы оно тогда вещественным? 2 целых числа - это два целых числа если Вы с ними работаете как с двумя целыми числами если же они образуют, например, комплексное число и Вы с ним работаете, не обращаясь к составляющим по отдельности, то тогда 2 целых числа = комплексное число а DataTime - вещественный тип, который хранится как число с фиксированной запятой, то что оно состоит из двух целых - дело уже реализации, в конечном счете всё(в т.ч. и строки) хранится в целых числах, просто они по разному интерпритируются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 12:38 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
немойДля «танкистов» сложно понять наверно, что есть «одним инсертом».. :) Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Над приведением datetime к int долго смеялсо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 12:55 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
SergSuper интересно, а если бы MS не написала(вполне могла ведь) как она хранит DataTime - было бы оно тогда вещественным? И в этом случае дата осталась бы датой. И уж никак не числом-с-плавающим-многоточием ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 13:09 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
pkarklin INSERT @T VALUES(1, 2), (3, 4), (5,6) Это приводит к увеличению производительности при массовых inserts? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 13:49 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
maytonpkarklin INSERT @T VALUES(1, 2), (3, 4), (5,6) Это приводит к увеличению производительности при массовых inserts? Естественно, это будет быстрее, чем INSERT ... SELECT ... UNION ALL SELECT ... О массовости я бы не стал здесь говорить, ибо массовую вставку надо делать по-другому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 13:53 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
pkarklinmaytonpkarklin INSERT @T VALUES(1, 2), (3, 4), (5,6) Это приводит к увеличению производительности при массовых inserts? Естественно, это будет быстрее, чем INSERT ... SELECT ... UNION ALL SELECT ... Интересно, а за счет чего быстрее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 14:11 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
SergSuperpkarklinmaytonpkarklin INSERT @T VALUES(1, 2), (3, 4), (5,6) Это приводит к увеличению производительности при массовых inserts? Естественно, это будет быстрее, чем INSERT ... SELECT ... UNION ALL SELECT ... Интересно, а за счет чего быстрее? Хотя, я погорячился. В такой простой ситуации никакого выигрыша не будет и это всего-навсего синтаксический сахар. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 14:16 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
pkarklin, если подходить формально, то выигрышь по производительности таки будет. Другое дело, что "почувствовать разницу" будет весьма затруднительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 14:19 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
Hello, locky! You wrote on Mon, 15 Dec 08 11:19:52 GMT: locky l> если подходить формально, то выигрышь по производительности таки будет. l> Другое дело, что "почувствовать разницу" будет весьма затруднительно.если таки формально, то зависит от реализации. -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 14:26 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
lockypkarklin, если подходить формально, то выигрышь по производительности таки будет. Другое дело, что "почувствовать разницу" будет весьма затруднительно. Формально - да, если учитывать "объем" инструкции и время на парсинг. Но планы выполнения будут одинаковые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 14:32 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
pkarklinХотя, я погорячился. В такой простой ситуации никакого выигрыша не будет и это всего-навсего синтаксический сахар. (кивает) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 14:46 |
|
||
|
Стоит ли переходить на Оракл?
|
|||
|---|---|---|---|
|
#18+
SergSuper немой, Вы не учитываете что не все биты из 4-х байт используются Да, согласен, в примере с конвертацией к INT это явно выражено (потеря знакового бита) :) SergSuper попытайтесь объяснить смысл от использования плавающей точки для хранения времени Опять согласен.. locky так вы, любезный, еще и тип datetime любите поприводить к int? А потом жалуетесь, мол "геморой"? Нет, что Вы, боже упаси таким извратом заниматься.. Хотя, иной раз приходится это делать - но к СУБД это не относится, скорей к поставщикам протокола обмена. Это же только примеры.. и в случае с приведением к INT можно было сразу ткнуть носом почему оно не срастается. PS: я тут не давно, и видать не проникся еще - думал только отвечают (высказывают мнения) на поставленный вопрос. А разбираться у кого что круче не входило в планы - да и бессмысленно, имхо, это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 14:51 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=35714650&tid=1552997]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 275ms |
| total: | 418ms |

| 0 / 0 |
