거대한 저장 프로 시저가 있으며이를 최적화하려고합니다.표 A의 열을 기준으로 표 B의 열을 업데이트하십시오.
임시 테이블 과 Id이 있습니다.
난 이드 & 부울 필드 표 A의 모든 이드의 내용 시험제가
예 표 B. 상기 테스트 = 1을해야 열이 메인 테이블 B가 : 나는 다음과 같은 테이블 B를 얻을 필요가
Id
--
1
2
3
. 이미 표 B의 id 필드가, 난 단지
Id Test
-- ----
1 1
2 1
3 1
4
5
6
내가 현재 while 루프를 사용하여 표 통해 반복하고있는 테스트 열 B를 업데이트해야하고 각 ID I에 대한 표 B에있는 테스트 열을 업데이트하고 있습니다.
WHILE (1 = 1)
BEGIN
-- Exit loop if no more Transactions
IF @@ROWCOUNT = 0 BREAK;
Update [B]
set Test = 1
where Id = (SELECT TOP 1 Id
FROM #B
WHERE Id > @Id1
ORDER BY Id)
END
PS : @ Id1은 저장 프로 시저의 입력 매개 변수입니다.
다른 효율적인 방법은 생각할 수 없지만 내 쿼리가 실행되는 데 많은 시간이 걸립니다. 동일한 작업을 수행하는 더 좋은 방법이 있는지 알려 주시기 바랍니다.
솔루션을 제공해 주셔서 감사합니다. – CodeNinja