임시테이블에 있는 1,000만건 정도의 데이터를 운영테이블로 옮기려고 합니다. 이럴 경우 운영테이블을 TRUNCATE후에 INSERT하는경우와 임시테이블을 운영테이블로 RENAME하는 경우가 있는데.. 어떤 방법이 더 효율적인가여?
rename은 딕셔너리만 수정하는 작업이라 훨씬 간단하게 끝납니다.
1. 임시테이블의 defragment가 거의 없다는 전제하에서는 rename이 10초이내에 끝납니다. 그런 후 원래 table에 걸려 있거나 관련되어져 있던 index,trigger,view,procedure,function,synonym등등의 object를 확인 하고 재생성 시켜 주면 되겠습니다. 2. 임시테이블의 defragment에 문제가 있다면, Table insert를 고려해 보아야할 것입니다. insert시에는 관련된 trigger 및 index를 disable시켜서 작업을 하시기 바랍니다. 단, constraint(제약조건)은 disable 시키면 나중에 constraint에 걸렸던 부분을 찾아서 처리해줘야할 겁니다. 그런 후 index rebuilding 및 trigger등을 재생성시켜 주시면 되겠습니다. 그래도 1000만건이면.. 휴~~~ 굉장하겠습니다. 중간에 insert시 error가 난다면... 헉!!! 입니다.. 저라면는 1번을 선택할 겁니다.. (defragment가 30%를 넘는다 할 지라도.. 밤샘해도 insert가 다 될려나... 혹시 loaddata로 불러들이면 조금 더 빠를지..어떨지 모르겠네요..)