Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Помогите с оптимизацией запроса  [new]
Crimean
Member

Откуда:
Сообщений: 13148
А лучше вычисляемое поле с готовой датой + индекс по нему - вообще взлетит.
22 июн 05, 17:17    [1641458]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Matvey B
Member

Откуда:
Сообщений: 69
ChA
Matvey B
почему
cast(cast(t2.Date as float)as integer) 
а не
cast(t2.Date as integer) 
???
DECLARE @d datetime
SET @d = '2005-01-01 00:01'
SELECT cast(@d as float), cast(@d as integer)
SET @d = '2005-01-01 23:59'
SELECT cast(@d as float), cast(@d as integer)


для такой записи
cast(cast(t2.Date as float)as integer)

что @d = '2005-01-01 00:01' что @d = '2005-01-01 23:59' одинаково и РАВНО
22 июн 05, 17:24    [1641497]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
ChA
Member

Откуда: Москва
Сообщений: 11124
Matvey B
для такой записи
cast(cast(t2.Date as float)as integer)

что @d = '2005-01-01 00:01' что @d = '2005-01-01 23:59' одинаково и РАВНО
Да, и что ?
Был вопрос
Matvey B
2 LexusR

и еще вопрос почему

cast(cast(t2.Date as float)as integer) 

а не

cast(t2.Date as integer) 
???
Был пример
DECLARE @d datetime
SET @d = '2005-01-01 00:01'
SELECT cast(@d as float), cast(@d as integer)
SET @d = '2005-01-01 23:59'
SELECT cast(@d as float), cast(@d as integer)
, чтобы показать разницу, между
cast(cast(@d as float)as integer) 
и
cast(@d as integer)
22 июн 05, 17:32    [1641533]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Matvey B
Member

Откуда:
Сообщений: 69
2 ChA

и что этот пример показал???
22 июн 05, 17:34    [1641543]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Matvey B
Member

Откуда:
Сообщений: 69


К сообщению приложен файл. Размер - 0Kb
22 июн 05, 17:35    [1641546]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Glory
Member

Откуда:
Сообщений: 104760
Matvey B
2 ChA

и что этот пример показал???

У меня показал следующее

----------------------------------------------------- ----------- 
38351.000694444447 38351

----------------------------------------------------- -----------
38351.999305555553 38352
22 июн 05, 17:36    [1641556]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Matvey B
Member

Откуда:
Сообщений: 69
из моих наблюдений получается
cast(@d as float)
единственно верно, остальные варианты не предсказуемы и зависят, например, в дате время до 12:00 или после.
22 июн 05, 17:40    [1641577]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Glory
Member

Откуда:
Сообщений: 104760
Matvey B
остальные варианты не предсказуемы и зависят, например, в дате время до 12:00 или после.

А float разве не зависит ?
22 июн 05, 17:43    [1641600]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Matvey B
Member

Откуда:
Сообщений: 69
наоборот float показивает разницу даже в секунду

для integer заметна разница 12 часов

для комбинации integer (float ) - 24 часа!!!!
22 июн 05, 17:47    [1641622]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Glory
Member

Откуда:
Сообщений: 104760
Matvey B
наоборот float показивает разницу даже в секунду

для integer заметна разница 12 часов

для комбинации integer (float ) - 24 часа!!!!

Как-как, извините ?
22 июн 05, 18:01    [1641702]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Matvey B
Member

Откуда:
Сообщений: 69


К сообщению приложен файл. Размер - 0Kb
22 июн 05, 18:04    [1641720]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Matvey B
Member

Откуда:
Сообщений: 69


К сообщению приложен файл. Размер - 0Kb
22 июн 05, 18:05    [1641727]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Matvey B
Member

Откуда:
Сообщений: 69


К сообщению приложен файл. Размер - 0Kb
22 июн 05, 18:07    [1641731]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Glory
Member

Откуда:
Сообщений: 104760
2 Matvey B
И что показывает ваш скриншот? Что целочисленные типы данных не содержат знаки после запятой ? Или что при конвертации типов может происходить округление ?
22 июн 05, 18:07    [1641737]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
Вспомнился еще один корректный метод "обрезания" времени
select floor(cast(getdate() as float))
Может не к месту, тогда извините :)
22 июн 05, 18:15    [1641772]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Matvey B
Member

Откуда:
Сообщений: 69
это показывает, что для сравнения двух дат не подходит integer или integer (float). и мой вопрос был:

почему cast(cast(t2.Date as float)as integer) ?
22 июн 05, 18:17    [1641778]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
ChA
Member

Откуда: Москва
Сообщений: 11124
Matvey B
2 ChA

и что этот пример показал???
Боюсь, это уже к окулисту...
22 июн 05, 18:18    [1641786]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Glory
Member

Откуда:
Сообщений: 104760
это показывает, что для сравнения двух дат не подходит integer или integer (float).
Не подходит cast() как метод преобразования float в int. Из-за того, что он автоматически производит округление.
22 июн 05, 18:26    [1641828]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Matvey B
Member

Откуда:
Сообщений: 69
Glory
это показывает, что для сравнения двух дат не подходит integer или integer (float).
Не подходит cast() как метод преобразования float в int. Из-за того, что он автоматически производит округление.


Спасибо за обьяснение что происходит при преобразования float в int, очень познавательно. Если бы Вы прочитали сначала все обсуждение, то заметили бы, что я задал вопрос LexusR почему он использовал конструкцию


cast(cast(t2.Date as float)as integer) between
                                  cast(cast(t3.DateBeg as float)as integer)and
                                  cast(cast(t3.DateEnd as float)as integer)) 

С уважением.
22 июн 05, 18:41    [1641879]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Glory
Member

Откуда:
Сообщений: 104760
Если бы Вы прочитали сначала все обсуждение, то заметили бы, что я задал вопрос LexusR почему он использовал конструкцию
Если бы внимательно читали то, что вы сами пишите, то и писали бы что нельзя использовать cast() а не тип данных int.
22 июн 05, 18:45    [1641897]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Matvey B
Member

Откуда:
Сообщений: 69
Glory
Если бы Вы прочитали сначала все обсуждение, то заметили бы, что я задал вопрос LexusR почему он использовал конструкцию
Если бы внимательно читали то, что вы сами пишите, то и писали бы что нельзя использовать cast() а не тип данных int.


castможно использовать, но с типом float
22 июн 05, 18:49    [1641910]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Glory
Member

Откуда:
Сообщений: 104760
Matvey B
Glory
Если бы Вы прочитали сначала все обсуждение, то заметили бы, что я задал вопрос LexusR почему он использовал конструкцию
Если бы внимательно читали то, что вы сами пишите, то и писали бы что нельзя использовать cast() а не тип данных int.


castможно использовать, но с типом float

И показать можете для задачи поставленной DimonNew ?
22 июн 05, 18:54    [1641929]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Matvey B
Member

Откуда:
Сообщений: 69
А чем вам пример LexusR не подходит, но без преобразования в int???
22 июн 05, 19:00    [1641946]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Glory
Member

Откуда:
Сообщений: 104760
Matvey B
А чем вам пример LexusR не подходит, но без преобразования в int???

Подходит любой метод, который сможет _отбросить_ дробную часть. А не _округлить_ ее.
Например, round(..., 0, 1)
22 июн 05, 19:03    [1641956]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с оптимизацией запроса  [new]
Matvey B
Member

Откуда:
Сообщений: 69
Прошу прощения Glory , но что Вы пытаетесь мне доказать? Я предложил совершенно другой вариант проверки на вхождение даты в диапазон. А вопрос свой задал LexusR , что бы узнать у чем он руководствовался используя преобразованое cast(cast(t2.Date as float)as integer). И ничего более. Я прекрасно знаю что и как округлять и приводить. Здесь такой задачи не было.
С уважением.
22 июн 05, 19:10    [1641973]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить