나는 저장 프로 시저를 통해 갈 것이고 나는 아래와 비슷한 약 13 개의 update 문을 발견했을 때이를 최적화하려고 노력했다. 나는 누군가가 이것보다 더 좋은 해결책을 가지고 있는지 궁금해했다. 나는 case 문이나 병합을 사용할 수 있다는 것을 알고 있으며 이것은 의미 론적으로 동일하지만 모든 열이 항상 업데이트된다는 것을 명심해야한다. 이것은 아마도 당신에게 아무런 문제를 일으키지 않을 것이지만,이 접근법이 동시성 문제를 야기 할 수 있도록 높은 트랜잭션 볼륨을 가질 수 있습니다. 왜 이러는기능을 유지하면서 여러 개의 업데이트 문을 결합 할 수 있습니까?
UPDATE COGS
SET Revenue = coalesce(Revenue, 0),
Costs = coalesce(Costs, 0),
Disposal = coalesce(Disposal, 0),
Trans = coalesce(Trans, 0)
WHERE (Revenue IS NULL or Costs IS NULL or Disposal IS NULL or Trans IS NULL)
AND monthDate = @targetCOGSdate;
그러나 : 그들은 null의 경우
UPDATE COGS
SET Revenue = 0
WHERE Revenue IS NULL
AND monthDate = @targetCOGSdate;
UPDATE COGS
SET Costs = 0
WHERE Costs IS NULL
AND monthDate = @targetCOGSdate;
UPDATE COGS
SET Disposal = 0
WHERE Disposal IS NULL
AND monthDate = @targetCOGSdate;
UPDATE COGS
SET Trans = 0
WHERE Trans IS NULL
AND monthDate = @targetCOGSdate;