삭제 SQL 스크립트는 오랜 시간이 걸리며 오라클 12c에서도 영원히 매달려 있습니다. 우리는 아래와 같이 수백 개의 삭제 스크립트를 가지고 있으며 병렬 작업/* + 병렬 (a, 4) * /로 실행하려고 시도했지만 성능 향상에는 별 도움이되지 않습니다.SQL 삭제 - 영구 사용
- 삭제 스크립트를 조정할 수있는 방법이 있습니까?
- 성능 향상을 위해 PL/SQL - for 루프를 사용할 수 있습니까?
- 예인 경우 의견 및 조언을 공유하십시오.
샘플 SQL 스크립트의 일부 :
DELETE
FROM
E_PROJ_DETAIL
WHERE
CATEGORY_ID in (SELECT PRIMARY_KEY FROM Y_OBJ_CATEGORY WHERE TREE_POSITION='VEN$_MADD');
COMMIT;
delete
from
e_proj_group_access
where enterprise_object_id in (select primary_key from t_project where application_id in (select application_id from y_object_definition where unique_code ='VEN$_MADD'));
commit;
y_obj_category의 행 수, e_proj_detail의 사용자 수는 어떻게됩니까? category_id에 색인이 있습니까? 당신이해야 할 일은 실행 계획을 보는 것입니다. – Hogan
세부 사항이 없으면 대답하기가 힘듭니다 (아마도 제공 할 수는 없을 것입니다). 내 즉각적인 생각 : 1) 색인 문제가 있습니다. 2) 누군가가 어딘가에 물건을 늦추는 트리거를 구현했습니다. – Paulb
@ Paulb의 추측과 관련하여 인덱싱되지 않은 외래 키 (인덱스 문제 유형이지만 별도로 호출해야하는 항목)가 있는지에 대한 질문이 될 것입니다. –