레코드 복제를 위한 테이블의 선택 0 2 2,105

by 야신 [SQL Query] SQL [2013.06.28 17:53:16]


테이블을 데이타를 복제하기 위해서 보통 DUAL 을 이용한 테이블을 많이 사용합니다.
그런데 프로젝트를 하다 보니 복제를 위한 숫자를 가진 테이블을 만들어 사용하는 경우도 있더군요.
해당 컬럼에 PK 를 잡아서...

그래서 둘의 차이점을 한번 비교해 보았습니다.
1) DUAL
SELECT aaa.*
  FROM aaa
           ,  ( select level as seq
                   from dual 
                 connect by level <= 3)

2) 테이블 이용
SELECT aaa.*
  FROM aaa
           ,  copy_temp
WHERE seq <= 3

PLAN
1) DUAL 사용시 
DUAL COST : 3, cadinaltiy : 1 , I/O : 2 

*최종결과 :  cadinality : 10, byte : 2840

2) 테이블 사용시
테이블 : COST : 0, cadinality : 3, I/O : 0

* 최종결과 cadinality : 30 , byte : 8610

해석에 조금 엇갈리는 부분이 있는데 cost 나 I/O 를 보면 테이블이 이용한 것이 좋은데 - 인덱스를 이용해서라고 추정됨 )
최종 결과는 dual 을 이용한 것이 나아 보입니다. cadinality 와 byte 가 증가하지 않아서요.

여러분들은 어떤 방식을 이용하시는지요?

by 용근님 [2013.06.28 18:32:36]

10g fast dual 방식으로 풀린 이후로는 테이블로 rownum으로 걸진 않았던거 같네요.

by 야신 [2013.06.28 21:31:11]
아무래도 dual 이 나은 선택이겠죠?
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입