문제

peoplesoft 애플리케이션 엔진에서 배치 프로세스를 개발 중입니다.

JOB 테이블에서 스테이징 테이블에 데이터를 삽입했습니다.

데이터를 처리해야 하는 직원은 총 120,596명이며 이는 개발 환경에 있습니다.

테스트 환경에서 처리할 행 수는 249047개입니다.

직원에게도 전송해야 하는 비직업 데이터가 많이 있습니다.

내 디자인은 개별 업데이트 문을 작성하여 테이블의 데이터를 업데이트한 다음 준비 테이블에서 데이터를 선택하여 파일에 쓰는 방식으로 설계되었습니다.

업데이트 시간이 너무 오래 걸리네요. 미세 조정하는 방법을 알고 싶습니다.

많은 것을 검색하고 사용해 보았습니다. /* +Append */ 업데이트 쿼리에 오류 메시지가 표시됩니다. sql command not ended.

또한 업데이트 쿼리에서는 nvl 또는 null 값을 확인해야 합니다.

stackoverflow를 통해 코드를 공유할 수 있는 방법이 있습니까? 이것은 peoplesoft 작업으로 작성된 삽입, 업데이트 문이므로 여기 사람들이 살펴볼 수 있습니까?

기술을 제안해 주세요. 제 목표는 5~10분 내에 실행을 완료하는 것입니다.

내 업데이트 내용:

원인을 알아냈습니다.이 업데이트 문입니다

 UPDATE %Table(AZ_GEN_TMP) 
  SET AZ_HR_MANAGER_ID = NVL(( 
 SELECT e.emplid 
  FROM PS_EMAIL_ADDRESSES E 
 WHERE UPPER(SUBSTR(E.EMAIL_ADDR, 0, INSTR(E.EMAIL_ADDR, '@') -1)) = ( 
 SELECT c.contact_oprid 
  FROM ps_az_can_employee c 
 WHERE c.emplid = %Table(AZ_GEN_TMP).EMPLID 
   AND c.rolename='HRBusinessPartner' 
   AND c.seqnum = ( 
 SELECT MAX(c1.seqnum) 
  FROM ps_az_can_employee c1 
 WHERE c1.emplid= c.emplid 
   AND c1.rolename= c.rolename ) ) 
   AND e.e_addr_type='PINT'), ' ') 

이를 미세 조정하기 위해 힌트를 사용하여 준비 테이블에 contact_oprid 값을 삽입합니다.

SELECT /* +ALL_ROWS */ c.contact_oprid 
      FROM ps_az_can_employee c 
     WHERE c.emplid = %Table(AZ_GEN_TMP).EMPLID 
       AND c.rolename='HRBusinessPartner' 
       AND c.seqnum = ( 
     SELECT MAX(c1.seqnum) 
      FROM ps_az_can_employee c1 
     WHERE c1.emplid= c.emplid 
       AND c1.rolename= c.rolename ) ) 
       AND e.e_addr_type='PINT')

스테이징 테이블을 업데이트합니다.

 UPDATE staging_table
  SET AZ_HR_MANAGER_ID = NVL(( 
 SELECT e.emplid 
  FROM PS_EMAILtable E 
 WHERE UPPER(REGEXP_SUBSTR(e.email_addr,'[^@]+',1,1)) = staging_table.CONTACT_OPRID 
   AND e.e_addr_type='PINT'),' ') /

20만 행의 데이터를 처리해야 하므로 5시간이 소요됩니다.

힌트나 인덱스를 사용하여 처리 속도를 높일 수 있는 방법이 있습니까?

또한 이것을 사용하지 않으면 다른 값을 업데이트하는 처리가 매우 빨라서 10분 안에 완료됩니다.

친절하게 도와주세요.

감사해요.

도움이 되었습니까?

해결책

이 문제를 해결하고 MERGE INTO TABLE oracle 문을 사용했으며 이제 파일 쓰기 작업을 포함하여 프로세스를 실행하는 데 10분이 걸립니다.귀하의 도움과 제안에 감사드립니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top