새 데이터를 삽입하기 전에 (다른 테이블의 데이터, 계산 등) 삽입하기 전에 약 1.75M 행으로 일부 테이블을 자르는 저장 프로 시저가 있습니다.
기본 개요는 매우 간단합니다.
- 테이블 자르기
- 시간당 약 75,000의 ‘배치’에 1.75M 행을 삽입하십시오.
이 프로세스에서 언제든지 인덱스를 명시 적으로 다시 작성해야하는지 궁금합니다. 예 :
- 테이블 자르기
ALTER INDEX ALL ON xxx REBUILD WITH (FILLFACTOR=90)
[또는 비슷한 것]- 1.75M 행 삽입
또는 아마도
ALTER INDEX ALL ON xxx DISABLE
- 테이블 자르기
- 1.75M 행 삽입
ALTER INDEX ALL ON xxx REBUILD WITH (FILLFACTOR=90)
[또는 비슷한 것]
DBA가 아닌 모든 지원에 감사드립니다 .DB를 잘 아는 개발자가 더 정확합니다!
답변
이 유형의 대부분의 질문과 마찬가지로 다릅니다. 관련된 모든 인덱스에 대해 “올바른”순서로 데이터를 삽입하지는 않을 것입니다. 즉, 해당 인덱스 모두 삽입 프로세스 중에 많은 페이지 분할이 발생할 가능성이 있습니다. 클러스터 된 인덱스 순서로 삽입한다고 가정하겠습니다. 모든 비 클러스터형 인덱스를 비활성화하고 잘라 내고 삽입 한 다음 모든 비 클러스터형 인덱스를 다시 작성할 수 있습니다. 물론 두 가지 접근법을 모두 시도하면 그 뒤에있는 이론에 관계없이 진실이 더 빠릅니다. 🙂
답변
모든 인덱스가 활성화 된 Plan Basic은 느리고 단편화 될 수 있습니다.
잘린 테이블과 빈 테이블의 ALTER INDEX REBUILD는 용도가 없으므로 계획 A를 수정해야합니다.
- 절단
- 끼워 넣다
- 인덱스 교체가 변경됨
속도가 느려질 수 있지만 최소한 날카로운 인덱스가 나타납니다.
계획 B는 괜찮습니다. 세 가지를 모두 테스트하여 가장 빠르며 인덱스 조각화가 가장 적은 것을 확인하십시오. 그런 다음 재건이 가치가 있는지 결정하십시오.