insert .. select를 하려고 하는데... 0 3 1,368

by 우태열 [2008.06.11 15:09:10]


반갑습니다.

기존의 프로그램의 속도가 너무 느려서 분석하다보니

select하는 커서를 만들어서

건단위로 패치해서 다른 table과 조인하여

조건을 만족하면 insert or update하는 전형적인 배치프로그램이더라구요

해서 업무를 약간 수정하여 

insert 대상 테이블을 truncate후  insert를 하는 one-query로 바꾸었는데...

이 또한 만족할만한 속도가 나지 않던데...

해서 인터넷을 찾아보니 insert  할때

insert /*+ APPEND */ ... 이렇게 힌트를 사용하라고 되어있던데,

궁금한것이 - 예전에 언듯 들은거 같아서...-

여기서 질문 : insert 대상이 되는 테이블에 index가 잡혀있으면 그다지 도움이 안된다고 들은거 같은데
어떤지 궁금합니다. 

오라클 메뉴얼을 direct load에 관한 자료를 찾아봐도 인덱스에 관한
언급은 못봣거든요.

경험있으신 분들의 조언 부탁드립니다.

수고하세요.

by 채용근 [2008.06.11 17:03:43]

by 우태열 [2008.06.11 18:04:10]
감사합니다.
모호하게 알고있는 부분을 깔끔히 정리할수 있게되었네요.

다시한번 감사드립니다.

by 현 [2008.06.11 19:37:56]
APPEND에 대해서 덧붙여 설명 드리면,
일반적으로 인서트시 freelist를 할당 받아서 인서트 하는데 비해서
APPEND 힌트는 HWM 다음부터 데이터를 씁니다.
그래서 좀 더 빠르다고 이야기 합니다.
그렇기 때문에 간혹 데이터 작업하실 때 사용하시는 것은 괜찮으나 정상적인 업무 절차에서 저것을 사용하는것은 자게 하시는 것이 나을 듯 합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입