2016-10-27 2 views
1

서버 A에서 B까지 많은 매우 큰 테이블에 대해 "삽입/삭제"를 수행해야합니다. 대상에 행이 있는지 확인하기 위해 각 행에 대해 하나의 쿼리를 실행하기 때문에 조회 구성 요소가 제대로 작동하지 않습니다. 데이터베이스 테이블.SSIS가 없으면 많은 수의 행을 삽입합니까?

무엇이 좋은 옵션입니까?


테이블에는 모두 PK가 있지만 크기는 수백 GB입니다. 대상 테이블은 3 % 미만의 행에서만 놓칠 수 있습니다. 따라서 병합 구성 요소가 좋은 옵션이 아닐 수 있습니까?

+0

'insert where someColumn not anotherTable from'또는'MERGE()'또는 다른 검증 방법을 사용하는지에 관계없이 - 여전히 레코드가 있는지 확인하고 싶다면 ... 상관없이 한 가지 방법으로 끝내야 할 것인가? – scsimon

+0

작업중인 데이터의 예를 들려 줄 수 있습니까? – DenStudent

+0

기본 키가있는 경우 병합 조인 (전체 조인)을 사용하고 표 2의 PK가 비어있는 경우 조건부 분할을 수행 할 수 있습니다. – DenStudent

답변

0

병합 SSIS 구성 요소를 사용할 수 있습니다. 개인적으로 스테이징 테이블에 모든 데이터를로드하고 나중에 저장 프로 시저에서 Merge T-SQL 문을 실행하여 더 나은 성능을 발견했습니다.

+0

자세한 내용은 질문을 업데이트했습니다. 병합 구성 요소도 준비 테이블도 좋은 옵션이 아닌 것 같습니다. – ca9163d9

+0

t-sql 병합 명령이 매우 잘 수행됩니다. 얼마나 많은 성냥을 찾더라도 다른 어떤 과정도 잘 진행될 것이라고 나는 생각하지 않는다. –

+0

T-SQL 병합은 큰 연결된 서버 테이블에서 제대로 작동합니까? – ca9163d9