2013-11-21 3 views
1

특정 보고서가 실행될 때 레코드 만 삭제되고 해당 기간에 상당히 커질 수있는 테이블이 내 DB에 있습니다. 보고서가 실행될 때 일괄 삭제를 구현하고 있습니다. 그냥가는 길에 대한 의견을 듣고 싶었습니다.데이터베이스에서 일괄 삭제 레코드

While Exists (select top (1) StoreNbr from #Test WHERE DATEDIFF(dd, LogDate, GETDATE()) >= 60) 
Begin 
      delete top (5000) from #Test WHERE DATEDIFF(dd, LogDate, GETDATE()) >= 60 
End 
  1. 나는이 어떤 실질적인 혜택을 않습니다 루프 내에서 WAITFOR 지연을 사용해야합니까?
  2. 삭제를 수행하기 전에 테이블에서 색인을 비활성화하고 완료되면 다시 활성화해야합니까?
+1

작업중인 SQL의 어떤 언어를 언급했는지 확인하십시오. 구문에서 MS SQL Server를 추측했지만 틀렸을 수 있습니다. – Charles

답변

0

저장 프로 시저 사용은 어떻습니까? 나는 과거에 그것을 사용했다. 저장 프로 시저에 delete 및 select 문을 포함시킵니다. 보고서가 저장 프로 시저를 실행하게하고 보고서는 정보를 얻고 한 번에 레코드를 삭제합니다.

+0

보고서 자체가 저장 프로 시저이며 마지막 단계로이 테이블을 정리하지만 대량 데이터 삭제로 인해 SSIS 패키지가 실패하게됩니다. date <@Date 인 table1에서 삭제하십시오. 여러 열의 인덱스가있는 약 1,000 만 레코드를 일괄 적으로 삭제하는 가장 좋은 방법에 대한 정보를 얻으려고합니다. – user1769667

+1

삭제하기 전에 삭제 색인을 시도한 다음 삭제가 완료된 후 색인을 다시 작성하십시오. – vasin1987

관련 문제