Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Merge with multiple join optimization help

User_6GLH0Jul 21 2021

Hi There,
Hope all is well.
I am running below merge statement but for some reason it is very slow. All the tables in the merge are large in volume (approx. 55 millions of data). The merge statement is significantly slow ... for example for a data 100K it takes hours.... .
Will appreciate if someone can review below merge and advice how/which area I can optimize to improve the performance?
Thank you in advance
merge into INT_DOCUMENT t
using (
select distinct p.doc_type_cd, p.doc_number, p.issue_country_cd, p.issue_date, p.issue_state, p.issuer from idp_party_documentation p
left join int_document id
on (p.doc_type_cd=id.document_type_cd and p.doc_number=id.document_number and nvl(p.issue_country_cd,'Y')=nvl(id.issue_country_cd,'Y')
and nvl(p.issue_state,'Y')=nvl(id.issue_state_province_cd,'Y')
and nvl(p.issuer,'Y')=nvl(id.issuer,'Y') and decode(p.issue_date, id.effective_date, 'SAME') = 'SAME')
where p.idp_effective_date=to_date('&&1','yyyymmdd')-1
and p.idp_change_type in ('I','U')
and p.doc_type_cd is not null
and REGEXP_LIKE(p.doc_type_cd, '[[:alpha:]]')
and id.document_key is null
and p.party_key not in
( select edr.entity_key from INT_ENTITY_DOCUMENT_RELATION edr
inner join INT_DOCUMENT id
on id.DOCUMENT_KEY=edr.DOCUMENT_KEY and edr.IS_TO_BE_DELETED=0
and id.DOCUMENT_TYPE_CD in ('EMPLOYER_IN','SSN','TIN','ITIN')
)
)s on (t.DOCUMENT_NUMBER=s.DOC_NUMBER and t.DOCUMENT_TYPE_CD=s.DOC_TYPE_CD AND t.EFFECTIVE_DATE=s.issue_date AND t.ISSUE_COUNTRY_CD=s.issue_country_cd AND t.ISSUE_STATE_PROVINCE_CD=s.issue_state AND t.ISSUER=s.issuer)
WHEN NOT MATCHED THEN INSERT
(t.BATCH_ID,
t.PARTITIONING_KEY,
t.DOCUMENT_KEY,
t.TENANT_CD,
t.DOCUMENT_NUMBER,
t.DOCUMENT_TYPE_CD,
t.BATCH_DATE_TIME,
t.EFFECTIVE_DATE,
t.IS_TO_BE_DELETED,
t.ISSUE_COUNTRY_CD,
t.ISSUE_STATE_PROVINCE_CD,
t.ISSUER,
t.ROW_UPDATE_DATE)
values
(
'&&2',
0,
'DK-' || S_DOC_KEY.NEXTVAL,
'N/A',
s.DOC_NUMBER,
s.DOC_TYPE_CD,
sysdate,
s.issue_date,
0,
s.issue_country_cd,
s.issue_state,
s.issuer,
sysdate);

Comments

Post Details

Added on Jul 21 2021
5 comments
76 views