powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Стоит ли переходить на Оракл?
25 сообщений из 152, страница 4 из 7
Стоит ли переходить на Оракл?
    #35713401
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35713402
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
З.Ы.
ничего личного
со всем уважением, конечно
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35713405
немой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
DECLARE @D1 DATETIME;
SET @D1 = GETDATE();
SELECT 
@d1 as DATA,cast(@D1 as integer) AS INT_DATA, cast(cast(@D1 as integer) as datetime) AS CAST_INT,
cast(@D1 as float) AS FLOAT_DATA,cast(cast(@D1 as float) as datetime) AS CAST_FLOAT

DATA                    INT_DATA    CAST_INT                FLOAT_DATA             CAST_FLOAT
----------------------- ----------- ----------------------- ---------------------- -----------------------
 2008 - 12 - 14   21 : 01 : 49 . 390   39795         2008 - 12 - 15   00 : 00 : 00 . 000   39794 , 876266088          2008 - 12 - 14   21 : 01 : 49 . 390 

( 1  row(s) affected)

...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35713411
немой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы быквально предугадали ссылку которую я хотел прокомментировать :)
Имеем 2 4-х байтного поля, как целочисленные.
тип INT, если не ошибаюсь, это 32 битное знаковое значение, т.е. 4 байта.
впрочем, в примере можно взять bigint - 8 байт. т.е. 2 по 4 байта.
выполнение запроса с приведением, должно заполнить младшую и старшую часть, т.к. они по определению в GETDATE() не нулевые.
Однако, видно что идет потеря младшей части в случае с INT (аналогично и с BIGINT), в тоже время, для чисел с плавающей запятой такого не наблюдается (это видно из запроса).
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35713417
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35713427
немой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это только подтверждает высказывание в MSDN что точность кратна 3,33 миллисекунды и не более, сравнивать два числа с плавающей запятой нет смысла (допустимо только неравенство).
4 байта это 4294967296 миллисекунд, в сутках их 86400000, т.е. значительно меньше и следовательно, целочисленное значение позволяет хранить полностью. Ограничения возникают если используется плавающий формат, тогда может гарантироваться только ограниченная разрядность и следовательно погрешность (кратность) декларированная MS вполне объяснима как и погрешность что даёт приведенный Вами код.
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35713434
немой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще, тема конечно интересная.. успели и бревнами пробросаться и т.д. … :)
Но к топику наверно не относится, как думаете?
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35713606
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев Фёдор Специально для тех, кто хоть на секунду сделает допущение, что г-н немой знает больше бревна
Зато теперь никто не сделает допущение что Вы уважаете собеседников :(
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35713629
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperЗато теперь никто не сделает допущение что Вы уважаете собеседников :(
Несущих чушь? Ни капельки.
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35714037
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев ФёдорSergSuperЗато теперь никто не сделает допущение что Вы уважаете собеседников :(
Несущих чушь? Ни капельки.
но Вы же тоже чушь написали - DateTime - это вещественный тип, просто он не "ЧПЗ"

блин, ну неужели это действительно такое удовольствие - написать гадость в отношении кого-то?


немой, Вы не учитываете что не все биты из 4-х байт используются
ну и потом попытайтесь объяснить смысл от использования плавающей точки для хранения времени
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35714072
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperDateTime - это вещественный тип
SergSuperблин, ну неужели это действительно такое удовольствие - написать гадость в отношении кого-то? нет, не испытываю. кстати, ваша очередь
SergSuperDateTime - это вещественный тип
правильно ли я понял, 2 целых числа = вещественный тип?
а 3 целых числа? а строка + целое + строка + строка - тоже вещественный тип ?
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35714192
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
немой
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. вы знаете, есть множество способов изобретательно выкручиваться из тех ситуаций, в которые сами же не менее изобретательно попали. За это девелоперов регулярно бьют по пальцам железной линейкой - но, увы и ах, помогает это достаточно слабо.
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35714198
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
немой,

так вы, любезный, еще и тип datetime любите поприводить к int?
А потом жалуетесь, мол "геморой"?
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35714320
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев Фёдорправильно ли я понял, 2 целых числа = вещественный тип?
а 3 целых числа? а строка + целое + строка + строка - тоже вещественный тип ?
интересно, а если бы MS не написала(вполне могла ведь) как она хранит DataTime - было бы оно тогда вещественным?

2 целых числа - это два целых числа если Вы с ними работаете как с двумя целыми числами
если же они образуют, например, комплексное число и Вы с ним работаете, не обращаясь к составляющим по отдельности, то тогда 2 целых числа = комплексное число
а DataTime - вещественный тип, который хранится как число с фиксированной запятой, то что оно состоит из двух целых - дело уже реализации, в конечном счете всё(в т.ч. и строки) хранится в целых числах, просто они по разному интерпритируются
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35714366
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
немойДля «танкистов» сложно понять наверно, что есть «одним инсертом».. :)

Код: plaintext
1.
2.
3.
Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) 
	Jul  9 2008 14:43:34 
	Copyright (c) 1988-2008 Microsoft Corporation
	Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)


Код: plaintext
1.
2.
3.
4.
DECLARE @T TABLE(col1 int, col2 int)

INSERT @T VALUES( 1 ,  2 ), ( 3 ,  4 ), ( 5 , 6 )

SELECT * FROM @T


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
(3 row(s) affected)

col1        col2        
----------- ----------- 
1           2
3           4
5           6

(3 row(s) affected)

Над приведением datetime к int долго смеялсо.
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35714411
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuper
интересно, а если бы MS не написала(вполне могла ведь) как она хранит DataTime - было бы оно тогда вещественным?
И в этом случае дата осталась бы датой. И уж никак не числом-с-плавающим-многоточием
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35714563
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin
INSERT @T VALUES(1, 2), (3, 4), (5,6)

Это приводит к увеличению производительности при массовых inserts?
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35714573
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonpkarklin
INSERT @T VALUES(1, 2), (3, 4), (5,6)

Это приводит к увеличению производительности при массовых inserts?

Естественно, это будет быстрее, чем INSERT ... SELECT ... UNION ALL SELECT ...

О массовости я бы не стал здесь говорить, ибо массовую вставку надо делать по-другому.
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35714634
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinmaytonpkarklin
INSERT @T VALUES(1, 2), (3, 4), (5,6)

Это приводит к увеличению производительности при массовых inserts?

Естественно, это будет быстрее, чем INSERT ... SELECT ... UNION ALL SELECT ...
Интересно, а за счет чего быстрее?
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35714650
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperpkarklinmaytonpkarklin
INSERT @T VALUES(1, 2), (3, 4), (5,6)

Это приводит к увеличению производительности при массовых inserts?

Естественно, это будет быстрее, чем INSERT ... SELECT ... UNION ALL SELECT ...
Интересно, а за счет чего быстрее?

Хотя, я погорячился. В такой простой ситуации никакого выигрыша не будет и это всего-навсего синтаксический сахар.
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35714661
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin,

если подходить формально, то выигрышь по производительности таки будет.
Другое дело, что "почувствовать разницу" будет весьма затруднительно.
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35714681
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35714702
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockypkarklin,

если подходить формально, то выигрышь по производительности таки будет.
Другое дело, что "почувствовать разницу" будет весьма затруднительно.

Формально - да, если учитывать "объем" инструкции и время на парсинг. Но планы выполнения будут одинаковые.
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35714764
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinХотя, я погорячился. В такой простой ситуации никакого выигрыша не будет и это всего-навсего синтаксический сахар.
(кивает)
...
Рейтинг: 0 / 0
Стоит ли переходить на Оракл?
    #35714786
немой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuper
немой, Вы не учитываете что не все биты из 4-х байт используются

Да, согласен, в примере с конвертацией к INT это явно выражено (потеря знакового бита) :)

SergSuper
попытайтесь объяснить смысл от использования плавающей точки для хранения времени

Опять согласен..

locky
так вы, любезный, еще и тип datetime любите поприводить к int?
А потом жалуетесь, мол "геморой"?

Нет, что Вы, боже упаси таким извратом заниматься.. Хотя, иной раз приходится это делать - но к СУБД это не относится, скорей к поставщикам протокола обмена.
Это же только примеры.. и в случае с приведением к INT можно было сразу ткнуть носом почему оно не срастается.

PS: я тут не давно, и видать не проникся еще - думал только отвечают (высказывают мнения) на поставленный вопрос. А разбираться у кого что круче не входило в планы - да и бессмысленно, имхо, это.
...
Рейтинг: 0 / 0
25 сообщений из 152, страница 4 из 7
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Стоит ли переходить на Оракл?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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