계획의 최상위 레벨은 기본 테이블 (클러스터형 인덱스)에서 행을 제거하고 4 개의 비 클러스터형 인덱스를 유지 관리하는 것과 관련이 있습니다. 이러한 인덱스 중 두 개는 클러스터형 인덱스 삭제가 처리되는 동시에 행 단위로 유지됩니다. 아래의 녹색으로 강조 표시된 "+2 비 클러스터형 인덱스"입니다.
다른 두 개의 비 클러스터형 인덱스의 경우 옵티마이 저는 이러한 인덱스의 키를 tempdb 작업 테이블 (Eager Spool)에 저장 한 다음 스풀을 두 번 재생하고 인덱스 키를 기준으로 정렬하여 순차 액세스 패턴을 향상시키는 것이 가장 좋습니다.

마지막 작업 순서는 xmlDDL 스크립트에 포함되지 않은 기본 및 보조 인덱스 유지 관리와 관련이 있습니다.

이것에 대해 할 일이별로 없습니다. 비 클러스터형 인덱스 및 xml인덱스는 기본 테이블의 데이터와 동기화 상태를 유지해야합니다. 이러한 인덱스를 유지 관리하는 비용은 테이블에 추가 인덱스를 생성 할 때 발생하는 트레이드 오프의 일부입니다.
즉, xml인덱스는 특히 문제가 있습니다. 최적화 프로그램이이 상황에서 몇 개의 행을 사용할 수 있는지 정확하게 평가하기는 매우 어렵습니다. 실제로 xml인덱스에 대해 과대 평가 하여이 쿼리에 거의 12GB의 메모리가 부여됩니다 (런타임에는 28MB 만 사용됨).

과도한 메모리 부여의 영향을 줄이려면 더 작은 배치로 삭제를 수행 할 수 있습니다.
를 사용하여 정렬하지 않고 계획의 성능을 테스트 할 수도 있습니다 OPTION (QUERYTRACEON 8795). 이것은 문서화되지 않은 추적 플래그 이므로 개발 또는 테스트 시스템에서만 시도해야하며 프로덕션에서는 절대 사용하지 않아야합니다. 결과 계획이 훨씬 빠르면 계획 XML을 캡처하고이를 사용 하여 프로덕션 쿼리에 대한 계획 지침 을 만들 수 있습니다.