Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подскажите почему время выполнение маленького по объему запроса больше?  [new]
Hopfen_Artur
Member

Откуда:
Сообщений: 106
Добрый день, есть два запроса.

Запрос 1, время выполнения около 12 мс
select
coalesce(sum(case when tb.TPA_ior is null then RF.Status else 0 end),0) as status,
CON.OID as oid
from
database3 AS CON
left join database4 AS RR ON RR.Asset = CON.OID
left join database1 AS RF ON RF.Reader = RR.Oid
and RF.Date between dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) and dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
left join database2 as tb on tb.TPA_ior = CON.OID and tb.View_problem = 'простой' and RF.Date between tb.Start_date and isnull(tb.End_date, null)
where
CON.IP = '1.2.3.4'
group by CON.OID;


Запрос 2, его собрат в упрощенном виде, где на выходе только один параметр. Время выполнения около 70 мс
select coalesce(sum(case when tb.TPA_ior is null then RF.Status else 0 end),0) as status
from database1 AS RF 
left join  database4 AS RR ON RF.Reader = RR.Oid 
    AND RF.Date BETWEEN dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) 
    AND dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
left join database2 as tb on tb.TPA_ior = RR.Asset and tb.View_problem = 'простой' and RF.Date between tb.Start_date and isnull(tb.End_date, null)
where RR.Asset = 'E3E5F3C0-A20A'


Подскажите почему второй запрос в пять раз дольше выполняется, хотя он в разы проще по объему данных (понимаю что миллисекунды)
27 фев 19, 13:50    [21820520]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите почему время выполнение маленького по объему запроса больше?  [new]
TaPaK
Member

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

в планы посмотри
27 фев 19, 13:51    [21820526]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите почему время выполнение маленького по объему запроса больше?  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
Hopfen_Artur,

ничего себе "собрат в упрощенном виде" в одном есть таблица/вьюха database3 в другом ею даже и не пахнет.
27 фев 19, 13:56    [21820532]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите почему время выполнение маленького по объему запроса больше?  [new]
Hopfen_Artur
Member

Откуда:
Сообщений: 106
felix_ff,

ну во втором не нужна database3 потому что передается на прямую ID, да и на выходе один параметр.
27 фев 19, 14:02    [21820542]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите почему время выполнение маленького по объему запроса больше?  [new]
Hopfen_Artur
Member

Откуда:
Сообщений: 106
TaPaK,

в одной из таблицы моему пользователю запрещено план смотреть =(
27 фев 19, 14:05    [21820545]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите почему время выполнение маленького по объему запроса больше?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Hopfen_Artur
TaPaK,

в одной из таблицы моему пользователю запрещено план смотреть =(

не слышал про такие ограничения :)
27 фев 19, 14:07    [21820553]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите почему время выполнение маленького по объему запроса больше?  [new]
Hopfen_Artur
Member

Откуда:
Сообщений: 106
TaPaK,

Сообщение 262, уровень 14, состояние 4, строка 2
Разрешение SHOWPLAN запрещено в базе данных "database1".

Время синтаксического анализа и компиляции SQL Server:
время ЦП = 0 мс, истекшее время = 0 мс.

Время работы SQL Server:
Время ЦП = 0 мс, затраченное время = 0 мс.
27 фев 19, 14:09    [21820556]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите почему время выполнение маленького по объему запроса больше?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
TaPaK
Hopfen_Artur
TaPaK,

в одной из таблицы моему пользователю запрещено план смотреть =(

не слышал про такие ограничения :)

повезло значит.
у меня вот на работе DBA ругались, что планы бы надо смотреть перед запуском, а я им в ответ
Сообщение 262, уровень 14, состояние 4, строка 1
SHOWPLAN permission denied in database

троли...

SHOWPLAN уровня DATABASE, а значит, в той вьюхе - таблица (TVF?) из другой базы.
27 фев 19, 14:13    [21820562]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите почему время выполнение маленького по объему запроса больше?  [new]
TaPaK
Member

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

это похоже на таблицу?
27 фев 19, 14:13    [21820563]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите почему время выполнение маленького по объему запроса больше?  [new]
Hopfen_Artur
Member

Откуда:
Сообщений: 106
TaPaK,

да database1 и database4 это другая база, там у меня доступ только на чтение. Но факт что в первом запросе они тоже присутствуют и запрос там быстрее. Не пойму где что подправить.

Вообще запрос 2 это модифицированный вот этот запрос. У него время выполнения около 6 мс, но оно и понятно:
select sum(RF.Status) as status
from database1 AS RF
left join database4 AS RR on RF.Reader = RR.Oid
where RR.Asset = 'E3E5F3C0-A20A'
AND RF.Date BETWEEN dateadd(hour, 7, cast(cast(getdate() as date) as datetime)) 
   AND dateadd(hour, 19, cast(cast(getdate() as date) as datetime))
27 фев 19, 14:20    [21820574]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите почему время выполнение маленького по объему запроса больше?  [new]
Konst_One
Member

Откуда:
Сообщений: 11517
dateadd(hour, 19, cast(cast(getdate() as date) as datetime))

это зачем такие преобразования?

database4 - это синоним на объект в другой базе?
27 фев 19, 14:23    [21820580]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите почему время выполнение маленького по объему запроса больше?  [new]
Hopfen_Artur
Member

Откуда:
Сообщений: 106
Konst_One,

да, переходная, там связи.
Если это заменить то запрос станет 30 мс.
select coalesce(sum(case when tb.TPA_ior is null then RF.Status else 0 end),0) as status

--заменить на 
select sum(RF.Status) as status


Но блин оно и в первом запросе есть, и вещь нужная.
27 фев 19, 14:27    [21820593]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите почему время выполнение маленького по объему запроса больше?  [new]
Konst_One
Member

Откуда:
Сообщений: 11517
вы сравниваете абсолютно разные запросы , у них планы отличются, данные другие, индексы скорее всего тоже другие, что вы хотите не понятно
27 фев 19, 14:30    [21820599]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите почему время выполнение маленького по объему запроса больше?  [new]
Hopfen_Artur
Member

Откуда:
Сообщений: 106
Konst_One,

я плохо разбираюсь в запросах, спасибо что уделили время, оставлю как есть наверное
27 фев 19, 14:34    [21820607]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить