2013-10-17 2 views
0

가 여기 내 업데이트 문 매우 느립니다.오라클 업데이트

상위 테이블과 하위 테이블 모두에 대한 인덱스가 있습니다.

+0

쿼리가 여전히 실행 중임을 어떻게 알 수 있습니까? 당신의 세션은 여전히 ​​활성화되어 있습니까? 많은 행이 업데이트된다는 것을 알고 있습니까? 몇 시간이 걸리면 세션 시간이 초과되었을 가능성이 있습니다. – mrod

답변

0

1) 커밋되지 않은 트랜잭션이 있는지 확인하십시오.

2) childtbl에 몇 개의 레코드가 있습니까? ParentTbl에서 몇 명이나됩니까? ParentTbl.ID에 대한 색인이 있습니까?

ParentTbl.ID에 대한 색인은 업데이트 속도를 높이는 올바른 기록을 찾는 데 도움이됩니다.

3) childtbl.chldFld에 대한 색인이 있습니까? 얼마나 많은 인덱스가 chldFld를 사용합니까?

cldFld에 색인을 지정하면 업데이트가 느려집니다.

자식 테이블에 너무 많은 (백만) 레코드가 있으면 업데이트가 오래 걸릴 수 있습니다.

0

테이블간에 외래 키 관계가있는 경우 조인 된 두 테이블의 키 보존보기에서 업데이트 할 수 있습니다.

일반적인 패턴은 다음과 같습니다

Update (
    select parent_table.key parent_key, 
     child_table.key child_key, 
     parent_table.value parent_value, 
     child_table.value child_value 
    from parent_table 
    join child_table on child_table.key = parent_table.key) 
set 
    child_value = parent_value; 

이 (예 : 해시 조인) 효율적으로 두 개의 테이블을 조인의 최적화에게 더 많은 선택권을 제공합니다.

0

먼저 테이블의 잠금 및 차단을 확인하십시오. 사용 된 색인과 잘못 작성된 색인을 점검하십시오. 더 나은 결과를 얻을 수 있도록 결과를 게시 할 수 있기를 바랍니다.