많은 행을 데이터베이스에 일괄 가져 오기위한 코드를 작성하려고합니다.내 SQL 삽입/업데이트 문이 너무 비효율적입니다.
현재 원시 데이터 (.csv 파일에서)를 스테이징 테이블로 대량 복사하므로 모든 데이터가 데이터베이스 측에 있습니다. 그러면 '연락처'를 식별하는 행이 가득한 준비 테이블이 나에게 남습니다. 이제는 이들을 데이터베이스의 다른 테이블로 옮겨야합니다.
다음으로 나는 아직 연락처 테이블에없는 스테이징 테이블의 행을 복사하고 이미 가지고있는 스테이징 테이블의 경우 "GroupToBeAssignedTo"라는 컬럼을 업데이트해야 나중에 작업을 나타낼 수 있습니다 나는 수행 할 것이다.
나는이 잘못에 대해 생각하고 있습니다. 쿼리가 효율적이지 않고 어떻게하면 더 잘 수행 할 수 있는지에 대한 조언을 찾고 있습니다.
update [t1]
set [t1].GroupToBeAssignedTo = [t2].GroupToBeAssignedTo from Contacts [t1]
inner join ContactImportStaging [t2] on [t1].UserID = [t2].UserID AND [t1].EmailAddress = [t2].EmailAddress AND [t2].GUID = @GUID
where not exists
(
select GroupID, ContactID from ContactGroupMapping
where GroupID = [t2].GroupToBeAssignedTo AND ContactID = [t1].ID
)
는 이후 데이터 다음 '깨끗한'단지 첫 번째 중복 확인하지 않고 모든 행을 가져올 더 나은하고 있는가? 내가 어디로 잘못 가고 있는지 제안을 찾고. 감사.
편집 : 명확히하기 위해 MS SQL에 관한 질문입니다.