입력 한 날짜를 기준으로 큰 (~ 50m 레코드 DB) 행을 삭제하는 아카이브 스크립트를 실행 중입니다. 날짜 필드는 테이블의 클러스터 된 인덱스이므로 조건문을 적용 할 대상입니다.인덱스에 의해 SQL 서버 삭제 속도가 크게 느려짐
이 삭제는 while 루프에서 실행 중이고 배치에서 1000에서 100,000 개의 레코드를 시도합니다. 배치 크기에 관계없이 놀랍도록 느립니다. 10,000 개의 레코드가 삭제되는 것과 같습니다. 실행 계획을 보면 "인덱스 삭제"에 많은 시간을 할애 할 수 있습니다. 테이블에는 약 15 개의 필드가 있으며, 약 10 개의 필드가 있습니다. 이 문제를 해결할 방법이 있습니까? 나는 각 인덱스를 삭제하는 데 너무 오래 걸리는 이유를 모르겠다. 누군가가 여기에서 무슨 일이 일어나고 있는지 밝혀 낼 수 있을까? 나는에 주저 해요 이유입니다,
alt text http://img94.imageshack.us/img94/1006/indexdelete.png
(삭제 명령 시퀀스 점)
이 데이터베이스는 라이브이며, 종종 삽입지고 : 이것은 내 실행 계획의 샘플입니다 크기를 트리밍하는 copy and truncate 메소드를 사용하십시오. 여기에 누락 된 다른 옵션이 있습니까?
이러한 모든 색인이 완전히 필요합니까? 색인을 사용하지 않는다면 색인을 제거해야합니다. –
방금 메인 사이트 프로그래머와 이야기를 나누었습니다. 이제는 더 이상 필요하지 않은 것 같습니다. 테이블에 대해 쿼리를 수행하는 동안 로그 유형 테이블로 사용되는 경우가 더 많습니다. 삭제 스크립트를 다시 실행하기 전에 일부 삽입을 삭제하려고 할 수 있습니다. – Kevin