문제

성능과 관련하여 이러한 업데이트 문 중 하나를 다른 업데이트 문을 사용해야 할 이유가 있습니까?

 UPDATE myTable
 SET    fieldx = 1
 FROM   myTable AS mt
      , myView AS mv
 WHERE  mt.id = mv.id


 UPDATE myTable
 SET    fieldx = 1
 WHERE  id IN ( SELECT id
                     FROM   myView )
도움이 되었습니까?

해결책

그들은 아마도 동일한 실행 계획을 가지고 나올 것입니다. 즉, 차이가 없다는 것을 의미합니다. 확인하려면 "실행 계획 포함"옵션을 켜고 SSMS의 각각을 시도해보십시오.

사실, 내가 갈 사람은 다음과 같습니다.

UPDATE mt
SET mt.fieldx = 1
FROM myTable mt
    JOIN myView mv ON mt.ID = mv.ID

나는이 구문을 더 선호합니다. 그러나 동일한 실행 계획도 나올 것입니다.

이를 입증하기 위해 업데이트 문의 각 변형으로 테스트를 실행했습니다. 아래의 실행 계획이 보여 주듯이, 그들은 모두 동일하게 나왔습니다. 모두 동일하게 수행합니다.
대체 텍스트 http://img707.imageshack.us/img707/7801/60422461.png


대체 텍스트 http://img683.imageshack.us/img683/7874/41210682.png


Alt Text http://img708.imageshack.us/img708/5020/20506532.png

다른 팁

이것은 성능과 말하지 않지만, 첫 번째 예제가 더 좋아서 코드의 기본 구조를 변경하지 않고 더 쉽게 조사 할 수 있습니다. 내가 어디서 무엇을 댓글을 달아주는 것에 주목하십시오.

UPDATE myTable 
SET    fieldx = 1
--SELECT *
FROM   myTable AS mt 
      , myView AS mv 
WHERE  mt.id = mv.id
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top