특정 테이블에 수백만 행이 포함 된 고전적인 "영업"데이터베이스가 있습니다. 이러한 각각의 큰 테이블에는 관련 "삭제"트리거와 "백업"테이블이 있습니다.매우 큰 "delete from"문을 "where"close로 최적화해야합니까?
표는 지난 7 일 "삭제"행 계속이 백업 :
CREATE TRIGGER dbo.TRIGGER
ON dbo.EXAMPLE_DATA
FOR DELETE AS
INSERT INTO EXAMPLE_BACKUP
select getDate(), *
from deleted
DELETE from EXAMPLE_BACKUP
where modified < dateadd(dd, -7, getDate())
: 해당 백업 테이블에 삭제 된 행을 복사하여 트리거 시작 후 수행이이 방식으로 백업에 삭제 백업 테이블의 구조는 원래 데이터 테이블 (키, 값)과 유사합니다. 유일한 차이점은 백업 테이블에 키에 통합 된 "수정 된"필드를 추가한다는 것입니다.
내 동료가 내 delete 문이 백업 테이블에 수백만 개의 행이 포함되는 즉시 시간 초과/문제가 발생하기 때문에 "루프"를 사용해야한다고 말했습니다. 그 삭제 사실 어떤 시점에서 날아 윌 것인가? 다른 방식으로해야합니까?
: 여기 하나의 방법 사용하여 SQL 서버의 – Jerome