내가 프로 시저 안에 다음 삭제 문이 : 천천히 약 10 초입니다오라클 - 작은 테이블에 천천히 문을 삭제
delete t_excuse
where EMP_NO = AL_EMPNO
AND TO_CHAR(EXCUSE_DATE,'yyyymmdd') BETWEEN LS_STARTDATE_G AND LS_ENDDATE_G;
합니다.
하지만 같은 선택 조항을 추가하면 삭제가 실행되므로 빠릅니다. LS_STARTDATE_G 간의
select count(*)
into v_avariable from t_excuse
where EMP_NO = AL_EMPNO
AND TO_CHAR(EXCUSE_DATE,'yyyymmdd') BETWEEN LS_STARTDATE_G AND LS_ENDDATE_G;
delete t_excuse
where EMP_NO = AL_EMPNO
AND TO_CHAR(EXCUSE_DATE,'yyyymmdd') BETWEEN LS_STARTDATE_G AND LS_ENDDATE_G;
t_excuse에 트리거가 정의되어 있습니까? 모든 색인? 인덱스가 삭제 될 때 업데이트되고 삭제 트리거가 실행됩니다. 둘 다 select 문에서 발생하지 않으므로 성능 차이에 대한 설명이 될 수 있습니다. –
트리거가 없지만 pk 컬럼의 기본 인덱스 –
전체 데이터 모델에서 모든 외래 키의 인덱스를 확인하십시오. 누락 된 항목이 있으면 작성하십시오. – nop77svk