У меня есть простой выбор, который работает очень медленно и сузил его до одного конкретного where
оператора.
Я не уверен, что вам нужно просмотреть весь запрос, или, возможно, сможете помочь мне понять, почему дело так сильно влияет на производительность. Я чувствую, что нашел проблему, но не могу решить ее. Я уже работал с заявлением о ситуации и никогда не сталкивался с такими огромными проблемами с производительностью.
Для этого конкретного примера. декларация выглядит следующим образом: Declare @lastInvOnly as int = 0
Оператор задачи where
следует и работает около 20 секунд:
and ird.inventorydate = case when @lastinvonly=0 then --get the last reported inventory in respect to the specified parameter
(select max(ird2.inventorydate) from irdate ird2
where ird2.ris =r.ris and ird2.generateddata!='g'and ird2.inventorydate <= @inventorydate)
end
удаление case
заставляет его работать за 1 секунду, что является ОГРОМНОЙ разницей. Я не могу понять почему.
and ird.inventorydate =
(select max(ird2.inventorydate) from irdate ird2
where ird2.ris =r.ris and ird2.generateddata!='g'and ird2.inventorydate <= @inventorydate)