Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SQL Server 2017 - где оптимальнее ставить Cast()  [new]
vikkiv
Member

Откуда: London
Сообщений: 2622
что будет быстрее?:
A:
select date_key,store_key,sum(cast(sales as money))sales
from store_sales group by date_key,store_key
или
B:
select date_key,store_key,cast(sum(sales)as money)sales
from store_sales group by date_key,store_key
14 май 18, 13:22    [21407963]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2017 - где оптимальнее ставить Cast()  [new]
Гигабайт Мегабайтович Килобайтов
Member [заблокирован]

Откуда:
Сообщений: 5975
а что вы хотите получить на выходе? ))
14 май 18, 13:24    [21407977]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2017 - где оптимальнее ставить Cast()  [new]
Гигабайт Мегабайтович Килобайтов
Member [заблокирован]

Откуда:
Сообщений: 5975
и да - какого типа sales ?
14 май 18, 13:25    [21407981]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2017 - где оптимальнее ставить Cast()  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20203
Тут надо задавать другой вопрос. А именно "В каком случае есть шанс получить корректные данные". Так вот - во втором случае ответ может быть и отрицательным...
14 май 18, 13:25    [21407982]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2017 - где оптимальнее ставить Cast()  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
vikkiv,

а храните всё в float?
14 май 18, 13:25    [21407983]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2017 - где оптимальнее ставить Cast()  [new]
vikkiv
Member

Откуда: London
Сообщений: 2622
хмм.., добавлю - потери при округлении не проблема
вопрос ограничен чисто контекстом что будет быстрее, т.е. не додумывая.
для упрощения скажем тип данных стоит decimal(10,3)
14 май 18, 13:30    [21408004]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2017 - где оптимальнее ставить Cast()  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
vikkiv,

для упрощения 1 млрд операций или 1? по факту результаты могут разойтись в тысячи и более
14 май 18, 13:35    [21408018]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2017 - где оптимальнее ставить Cast()  [new]
vikkiv
Member

Откуда: London
Сообщений: 2622
спасибо конечно за наводки про которые никто не спрашивал

TaPaK,

отвечая на вопрос (остальные по профилям: явно троли) - ещё раз: не округления/отклонения не важны.
14 май 18, 14:14    [21408167]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2017 - где оптимальнее ставить Cast()  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
vikkiv
спасибо конечно за наводки про которые никто не спрашивал

TaPaK,

отвечая на вопрос (остальные по профилям: явно троли) - ещё раз: не округления/отклонения не важны.

бесплатных операций у сервера нет. В остальном не ясно откуда может возникнуть вопрос "что будет быстрее"
14 май 18, 14:18    [21408188]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2017 - где оптимальнее ставить Cast()  [new]
Гигабайт Мегабайтович Килобайтов
Member [заблокирован]

Откуда:
Сообщений: 5975
ихма - если из decimal(10,3) в money , то конвертацию лучше делать последней, ибо в байтах decimal(10,3) - меньше чем money.
14 май 18, 14:41    [21408274]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2017 - где оптимальнее ставить Cast()  [new]
Гигабайт Мегабайтович Килобайтов
Member [заблокирован]

Откуда:
Сообщений: 5975
Гигабайт Мегабайтович Килобайтов
ихма - если из decimal(10,3) в money , то конвертацию лучше делать последней, ибо в байтах decimal(10,3) - меньше чем money.

и да -опять же ихма - разность будет заметна только на если вы будете сравнивать "100500 мильенов" записей ))
14 май 18, 14:42    [21408287]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2017 - где оптимальнее ставить Cast()  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Гигабайт Мегабайтович Килобайтов
ихма - если из decimal(10,3) в money , то конвертацию лучше делать последней, ибо в байтах decimal(10,3) - меньше чем money.

по вашему сервер не "полностью" будет поднимать данные? или результат может занимать неизвестное количество байт? а есил кончертировать в money в decimal(10,3) то выгоднее делать миллион раз?
14 май 18, 14:44    [21408299]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2017 - где оптимальнее ставить Cast()  [new]
Гигабайт Мегабайтович Килобайтов
Member [заблокирован]

Откуда:
Сообщений: 5975
TaPaK
Гигабайт Мегабайтович Килобайтов
ихма - если из decimal(10,3) в money , то конвертацию лучше делать последней, ибо в байтах decimal(10,3) - меньше чем money.

по вашему сервер не "полностью" будет поднимать данные? или результат может занимать неизвестное количество байт? а есил кончертировать в money в decimal(10,3) то выгоднее делать миллион раз?

от куда же такая телепатия? ))
я вот например третий раз читаю ваш пост, и не могу понять, что вы им хотели сказать? ...
14 май 18, 14:50    [21408341]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2017 - где оптимальнее ставить Cast()  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Гигабайт Мегабайтович Килобайтов
TaPaK
пропущено...

по вашему сервер не "полностью" будет поднимать данные? или результат может занимать неизвестное количество байт? а есил кончертировать в money в decimal(10,3) то выгоднее делать миллион раз?

от куда же такая телепатия? ))
я вот например третий раз читаю ваш пост, и не могу понять, что вы им хотели сказать? ...

вы порите чушЪ, и её очень больно
14 май 18, 15:27    [21408514]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2017 - где оптимальнее ставить Cast()  [new]
Eleanor
Member

Откуда:
Сообщений: 2632
Гигабайт Мегабайтович Килобайтов
я вот например третий раз читаю ваш пост, и не могу понять, что вы им хотели сказать? ...

Хочет сказать, что вы рассматриваете не тот эффект.
cast(sum - это сначала сложить 1 млн записей, а потом 1 раз конвертировать результат. Конвертация происходит 1 раз.
sum(cast - это сконвертировать 1 млн записей, а потом их сложить. Конвертация происходит 1 млн раз.
14 май 18, 16:52    [21408813]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить