테이블간에 대량 복사하는 가장 빠른 방법

sql sqlbulkcopy sql-server-2008

문제

열이있는 SQL Server 테이블을 A 및 B라고합니다. 형식 열과 단일 값 열이있는 새 테이블을 만들었습니다. 기존 테이블의 모든 행을 새로운 테이블로 복사하여 첫 번째 테이블의 각 행에 대해 두 번째 행 (두 번째 행은 값 A, 한 행은 값 B)을 복사합니다. 이 작업을 수행 할 간단한 스크립트가 있습니다.

insert into NewTable (ResultTypeId, Value)
(select @typeA, valueOfA from OldTable
union all
select @typeB, valueOfB from OldTable)

이 순진한 접근 방식은 약 8 분이 걸립니다. 이 작업을 수행하는 더 빠른 방법이 있습니까?

인기 답변

시도 할 사항 :

  1. union을 사용하는 대신 두 단계로로드하십시오. (1 억 개의 레코드가 하나의 트랜잭션을 밀어 내기에 엄청난 양이다.)
  2. 로드가 끝날 때까지 대상 테이블에 기본 키를 만들지 마십시오.
  3. 삽입 위치 대신 대량 삽입 insert into ... select . 한 곳에서 시작할 수 있습니다. http://social.msdn.microsoft.com/Forums/sqlserver/en-US/b2b59376-e039-485b-84ef-613122a043f0/bcp-or-bulk-insert-why?forum=transactsql


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.