나는 내부 선택 쿼리가 77 개 행을 반환하고 몇 밀리 초 단위로 실행이 Oracle SQL 삭제 쿼리의 성능을 어떻게 향상시킬 수 있습니까?
DELETE /*+ parallels(fe) */ FROM fact_x fe
WHERE fe.key NOT IN(
SELECT DISTINCT di.key
FROM dim_x di
JOIN fact_y fa
ON fa.code = di.code
WHERE fa.code_type = 'ABC'
);
다른 테이블에서 선택 쿼리의 결과에 따라 테이블에서 원하지 않는 행을 삭제되었다. 하지만 외부 삭제 쿼리는 8 시간 이상 영원히 실행됩니다. 나는 count (1)을 선택하기 위해 삭제를 변환함으로써 얼마나 많은 행이 삭제되어야하는지 계산하려고 시도했다. 그리고 그 총량은 총 6680 만 행 중 6640 만 fact_x 행이었다. 나는자를려고하지 않습니다. 나머지 행을 유지해야합니다.
다른 방법이 있습니까? PL/SQL 커서를 실행하여 삭제하면 더 잘 작동합니까?
나중에 시도 할 내용입니다. 아마 커서로 대량 삭제를 시도하는 것보다 빠를 것이라고 짐작할 수 있습니다. –