아래의 SQL 쿼리를 최적화하는 작업을 제공했습니다. 현재 쿼리가 시간 초과되어 차단이 많이 발생합니다. 방금 t-sql을 사용하기 시작 했으므로 쿼리를 최적화하는 데 도움을주십시오.Sql Server Union 쿼리 최적화
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);
하드 코딩 된 ID의 큰 목록은 어디에서 제공됩니까? 그리고 UNION ALL보다는 UNION이 필요한가요? 실제 실행 계획을 보면서 병목 현상이 어디인지 확인 했습니까? –
ID 코드에서오고있다, 실제로 문자열을 작성하는 코드 나는 그것을 전달하는 것 그리고 그들이 UNION 대신 UNION을 선택하는 이유가 무엇인지 모르겠다 ALL – user2041076
또한이 쿼리가 어떻게 될 수 있는지 잘 모르겠다. 차단이 많이 발생합니다. –