Я поставил задачу оптимизировать запрос sql ниже. В настоящее время запрос является тайм-аутом и вызывает много блокировки. Я только начал использовать t-sql, поэтому, пожалуйста, помогите мне с оптимизацией запроса.Оптимизация запросов на серверный сервер Sql
select ExcludedID
from OfferConditions with (NoLock)
where OfferID = 27251
and ExcludedID in (210,223,409,423,447,480,633,...lots and lots of these...,
13346,13362,13380,13396,13407,1,2)
union
select CustomerGroupID as ExcludedID
from CPE_IncentiveCustomerGroups ICG with (NoLock)
inner join CPE_RewardOptions RO with (NoLock)
on RO.RewardOptionID = ICG.RewardOptionID
where RO.IncentiveID = 27251
AND ICG.Deleted = 0 and RO.Deleted = 0 and
and ExcludedUsers = 1
and CustomerGroupID in (210,223,409,423,447,480,633,...lots and lots of these...,
13346,13362,13380,13396,13407,1,2);
Откуда этот большой список идентификаторов с жестким кодом? И вы уверены, что вам нужен UNION, а не UNION ALL? Вы посмотрели фактические планы выполнения, чтобы увидеть, где узкое место? –
Идентификаторы поступают из кода, код на самом деле строит строку, я догадываюсь, что она передает его, и у меня нет деталей, почему они выбирают UNION вместо UNION ALL – user2041076
Кроме того, я не уверен, что понимаю, как этот запрос может быть вызывая много блокировки ... –