SQL Server 2005에서 작은 테이블에서 큰 테이블로 대량 복사

bcp sqlbulkcopy sql-server sql-server-2005

문제

저는 SQL Server의 초보자이며 다음과 같은 딜레마가 있습니다.

나는 같은 구조의 두 개의 테이블을 가지고있다. 그것을 runningTblfinalTbl 이라고 runningTbl finalTbl .

runningTbl 은 15 분마다 600,000 ~ 1 백만 행을 포함합니다.

runningTbl 에서 데이터 정리를 한 후에 모든 레코드를 finalTbl 로 이동하려고합니다. finalTbl 에는 현재 약 3 천 8 백만 행이 있습니다.

위의 과정은 15-20 분마다 반복해야합니다.

문제는 runningTbl 에서 runningTbl 으로 데이터를 이동하는 데 시간이 20 분 이상 finalTbl 는 것입니다.

초기에는 테이블이 작을 때 복사하는 데 10 초에서 2 분이 걸렸습니다.

이제는 너무 오래 걸립니다.

이걸 도와 줄 수있는 사람은 누구야? SQL 쿼리를 따르십시오 ..

감사

인기 답변

우선 몇 년 동안 배웠던 것들 중 하나는 MSSQL이 모든 종류의 연산을 최적화하는 데 큰 역할을하지만 그렇게하기 위해서는 관련된 모든 테이블에 대한 통계에 크게 의존해야한다는 것입니다. 따라서 실제 삽입을 실행하기 전에 "UPDATE STATISTICS processed_logs"& "UPDATE STATISTICS unprocessed_logs"를 실행하는 것이 좋습니다. 심지어 큰 테이블에도 이런 것들이 오래 걸리지는 않습니다. 그 외에도, 위의 쿼리를 기반으로, 많은 대상 테이블의 인덱스에 따라 달라집니다. 타겟 테이블에 (적어도) UnixTime에 클러스터 된 인덱스 (또는 PRIMARY KEY)가 있다고 가정하고 있습니다. 그렇지 않으면 기존 레코드 사이에 점점 더 많은 데이터를 집어 넣을 때 주요 데이터 조각화를 생성하게됩니다. 이 문제를 해결하기 위해 대상 테이블의 조각 모음을 한 번씩 수행 할 수 있지만 (온라인에서는 수행 할 수 있지만 시간이 오래 걸림) 클러스터 된 인덱스 (또는 PK)를 사용하면 데이터가 항상 테이블 끝에 추가됩니다. 더 나은 접근 방법이되어야한다. 글쎄, 내 생각에 적어도.



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