2012-11-15 1 views
7

최근에 MSSQL 2008 R2로 업그레이드하고 각 테이블에 수백만 개의 행이있는 경우 "새"병합 기능이 Truncating 및 Inserting보다 효율적이고 빠른지 궁금합니다. 누구나 성능에 대한 데이터를 제공 할 수 있다면 좋겠지 만 설명이 도움이 될 것입니다.MERGE 대 TRUNCATE 및 INSERT

+0

추가 할 행 수에 따라 다릅니다. 실행 시간이'merge'와'truncate ... insert'에 대해 동일한 임계 값이있을 것입니다. –

+0

'TRUNCATE'는 "현재"ID 값을 재설정하지만 병합을 사용할 때는 보존된다는 것을 잊지 마십시오. –

답변

1

잘 모르겠습니다. TRUNCATEINSERT을 정확하게 받았습니다. 그렇지 않다면, 나를 고쳐주십시오.

MERGE은 기존 행에 UPDATE을 수행하거나 기존 행이없는 경우 INSERT을 수행하는 메커니즘을 의미합니다.

모든 것이 INSERT이므로 MERGE 사용을 제거하는 TRUNCATEINSERT을 제안합니다. 나는 결코 그것을 시도하지 않았기 때문에 MERGE이 더 빠를 지 여부를 알지 못하지만, UPDATE 또는 INSERT 중 어느 것을 사용할지 결정하는 부분이 약간의 오버 헤드를 부과한다고 가정 할 것이다. .

+0

TRUNCATE 및 INSERT 대신 MERGE를 사용할지, 둘 다 사용하지 않을지 궁금합니다. 혼란을 드려 죄송합니다. –

+0

안녕 케빈. 아마도 내가 잘못 말한 것 같습니다. tr3과 마찬가지로 한 테이블에서 다른 테이블로 데이터를 복사하려고한다고 가정했습니다. 이 경우,'TRUNCATE'와'INSERT'을 고수 할 것입니다. 왜냐하면'MERGE'의 일부분이 UPDATE를 사용하여 오버 헤드를 추가 할 것인지 아닌지를 확인하기 때문입니다. 단일 테이블을 복제하는 간단한 방법을 찾고 있다면이 SO 질문을보십시오. 테이블의 일일 스냅 샷을 얻는 방법 - http://stackoverflow.com/questions/8813808/how-to-take-daily-snap-of-a-table – SchmitzIT

1

데이터 변경 (행의 체크섬 유지)이 필요했기 때문에 MERGE을 사용했지만 특별한 이유가 없을 때마다 해당 데이터를 "복제"해야한다고 생각하기 때문에 MERGE을 사용합니다. 모든 MERGE이 일종의 수표를 발행 한 후에 (기본 키에 대한 점검이 있으며 추가 조건은 모두 WHEN입니다); TRUNCATE을 사용하고 대량 INSERT 당신이 방법에 의해 플레이

의 조건이 100 % 사실로이 적용되지 않습니다 모든이 없어야으로 , 내가 증거로 가져올 수있는 성능 검사를하지 않는다; 두 작업을 모두 시도하고 어느 작업이 더 많은 시간이 걸릴지 제안하십시오.)