우리는 300,000 개가 넘는 레코드가있는 테이블이 몇 개 있으며 한 테이블에서 다른 테이블로 레코드를 전송/복사하는 데 몇 시간이 걸립니다. 많은 양의 데이터를 다룰 때 커서를 사용하고 하나의 테이블에서 다른 테이블로 각 레코드를 하나씩 복사하는 것보다 효율적인 방법이 있습니까?대용량 데이터를 하나의 테이블에서 다른 테이블로 복사하는 더 효율적인 방법
코드 :
open SOMETBL
fetch SOMETBL into @key1,@key2,@key3,@key4
while(@@fetch_status = 0)
begin
SELECT @key1InMapping = count(*) FROM SOMEOTHERDB.dbo.tblSOMETBLping WHERE fldEServicesKey = @key1
SELECT @eServiceTypeKey = fldAServiceTypeKey FROM SOMEOTHERDB.dbo.tblAServiceType WHERE fldAServiceTypeNumber = @key4
if (@eServiceTypeKey=null or @eServiceTypeKey=0)
set @eServiceTypeKey = 50
if @key1InMapping>0
begin
update SOMEOTHERDB.dbo.tblSOMETBLping set [email protected] where fldEServicesKey= @key1
-- print 'post='+convert(varchar,@key2) + ' :key1='+convert(varchar,@key1)+ ' :serviceTypeKey='+convert(varchar,@eServiceTypeKey)+' : serviceTypeNum='+convert(varchar,@key4)
end
fetch SOMETBL into @key1,@key2,@key3,@key4
end
close SOMETBL
몇 시간이 걸리는 것은 커서입니다. 연속 SQL 쿼리는 300,000 개의 행만 복사하는 데 몇 초에서 몇 분이 걸립니다. – HardCode
단일 데이터베이스에서 데이터 전송이 일어나고 있습니까 아니면 데이터베이스간에 데이터를 이동하고 있습니까? –
@Declan_K 이것은 단일 데이터베이스에서 발생합니다. –