У меня 2 вопроса о повышении эффективности хранимой процедуры:Как повысить производительность хранимой процедуры?
1) В ЗЕЬЕСТЕ:
,CASE WHEN vatcs.CashDeskId IN (1293,1296,1295) THEN 1 ELSE 0 END --Кассы-метро
,CASE WHEN vatcs.CashDeskId IN (21,994,1137,1150,1162,1163,1282,1314,1327,1328) THEN 1 ELSE 0 END --Кассы-остальные
,CASE WHEN vatcs.CashDeskId IN (988) THEN 1 ELSE 0 END --Портал 2.0
,CASE WHEN vatcs.CashDeskId IN (1089,1088,122,1085,1087,1084,1086,270) THEN 1 ELSE 0 END --Евросеть
,CASE WHEN ISNULL(vatcs.CashdeskID, 0) NOT IN (1293,1296,1295,21,994,1137,1150,1162,1163,1282,1314,1327,1328,988,1089,1088,122,1085,1087,1084,1086,270)
Можно ли его ускорить?
2) В ИНЕКЕ:
WHERE vatcs.SoldDate >= @beginDate
AND vatcs.SoldDate < DATEADD(DAY, 1, @endDate)
Я не уверен, если это sargable и если не так, как я могу сделать это, чтобы быть sargable?
Предложение 'Or' выполняется быстрее, чем' in', в некоторых местах вы можете использовать 'или' clasuse, где значения для сравнения не слишком велики. –
Да. Я тоже думал. Означает ли это, что я не должен использовать OR, если у меня слишком много значений в IN (...)? – tesicg
Не делайте этого, IN на самом деле похоже на сокращенное обозначение OR. – Serge