관련 테이블 레코드가있는 경우 필드를 업데이트하는 문이 있습니다. 쿼리는 모든 레코드를 업데이트합니다. 나는 이것을하기위한 가장 효율적인/최선의 방법이 무엇인지 확신하지 못했다. 케이스 문사례 VS 여러 업데이트
UPDATE item
SET IsRestricted =
CASE
WHEN restriction.Id is null THEN 0
ELSE 1
END
FROM [dbo].[Item] item
left join [dbo].[Restriction] restriction
on restriction.Id = item.Id
해결 방법 2 : 지금까지 나는이 개 솔루션
솔루션 하나 마련했습니다 사람이 저를 측정하는 데 도움 수 있다면 여러 업데이트 문
UPDATE item
SET IsRestricted = 1
FROM [dbo].[Restriction] restriction
inner join [dbo].[Item] item
on restriction.Id = item.Id
UPDATE item
SET IsRestricted = 0
FROM [dbo].[Item] item
left join [dbo].[Restriction] restriction
on item.Id = restriction.Id
WHERE restriction.Id is null
하는 나는 그것을 이용해야한다.
참고 : 참고 :이 게시물이 중복되어 있는지 확인하지 못했습니다. 지금까지 본 적이있는 유사 항목은 트리거 또는 기타 여러 가지 항목이 포함되어 있으며 답변이 변경되는지는 확실하지 않습니다. 또한 대체 접근법을 제안 할 수 있습니다.
당신이 IsRestricted 열 필요하십니까 현명한 모두 동일한 성능 것 같다? 선택 시간에 제한의 유무를 묻지 않으려 고 항상 옳은 답을 얻을 수 있도록 보장 하시겠습니까? –
두 쿼리를 동일한 쿼리 창에 넣고 "실제 실행 계획 포함"(Ctrl + M)을 켜고 배치를 실행하여 결과를 확인하십시오. – Blorgbeard
@Damien 데이터베이스 사용량이 상당히 집중적이기 때문에 플래그가 있습니다 특정 시간에 조회를 수행하고 싶지는 않습니다. 두 가지 방법의 일반적인 비교만큼 내 문제에 대한 구체적인 답변을 찾지는 못했지만 – Manatherin