안녕하세요.
connect by level 은 거의 날짜를 만들때 dual을 이용해서 단순하게 사용해왔습니다.
최근 쿼리를 이리 저리 만들어보다가.. 얻게 된 결과가 잘 이해가 안 되어 질문드립니다.
쉬운 질문일 수 있는데, 저는 그동안 connect by level을 이해를 못 하고 사용했네요.ㅠ
with t as ( select 'a' col from dual union all select 'b' from dual ) select level, col from t connect by level <= 2 order by level, col
이렇게 실행을 했는데, 저는 단순하게
level col1
1 a
1 b
2 a
2 b
이렇게 나올 것이라 예상했는데,,
1 a
1 b
2 a
2 a
2 b
2 b
이런 결과가 나왔습니다.
level 숫자가 커질 수록 배로 늘어나는데,,
connect by level을 사용할 때 어떤 부분을 모른채 사용하고 있어서 결과를 이해 못 하는지..
알려주시면, 감사하겠습니다!!
Connect By Level 을 이용한 행 복제 방식은
- 반드시 dual 과 같이 1건짜리 자료에만 적용해야 합니다.
- 여러건의 자료에 직접 적용시 원치않는 행복제가 기하급수적으로 늘어나 성능에 문제가 됩니다.
http://gurubee.net/article/55635