템프테이블로 사용할 테이블 인덱스를 잡아야할까요? 0 2 1,464

by 김재현 [DB 모델링/설계] temp [2017.08.09 15:23:26]


안녕하세요 oracle11g를 사용하고있습니다

템프테이블로 사용할 테이블을 생성중입니다

용도는 프로시져안에서 커서를 이용해 데이터를 셀렉 후 처리하고 이것에 대한 이력을 쌓은 뒤 해당이력으로 건수를 체크해  다른테이블에 다시 이력을 쌓는 용도입니다. 그리고 프로시져 종료전에 해당 템프테이블을 delete 합니다. 데이터가 적게는 몇십건에서 몇만건이 될 수도 있습니다.

프로시져가 동시에 호출될 수도 있기 때문에 truncate는 사용 하지 못할것같습니다. 이럴 경우에는 인덱스를 잡지않는게 좋은선택일까요?

추가로 건수를 구할 때 그룹핑을 하기 때문에 템프테이블처럼 쓴건게 이미 커서가 종료된 데이터를 재사용하는 방법이 있을까요? 

by jkson [2017.08.09 18:13:13]

정확히 어떤 작업인지 잘 모르겠지만..

global temporary table 을 사용하시는 게 좋을 듯하네요.

on commit delete rows 옵션 주어서 자동으로 임시 데이터를 삭제되게 하시면 좋겠구요.

단순히 건수만 체크하는 거라면 굳이 임시테이블을 사용해야 할지..


by 김재현 [2017.08.09 21:56:46]

CURSOR를 이용해 데이터를 셀렉한다음에 해당 데이터를 삭제시키기 때문에 중요키값들만 템프에 넣을 생각이였습니다... 좀 더 알아봐야겠네요

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입