SELECT DISTINCT REGEXP_SUBSTR(MAPPING_CSH_SEQ, '[^|]+', 1, LEVEL) TXT
FROM T_CT_STORYHUB_MAPPING
WHERE CSH_SEQ= 245
CONNECT BY LEVEL <= length(regexp_replace(MAPPING_CSH_SEQ, '[^|]+',''))+1;
이게 너무 느려서 그런데 좀 봐주세요 ㅠ
by 기본충실
[2019.06.24 16:59:52]
아...인라인뷰로 감쌋더니 쉽게 해결햇습니다 ㅠ
by 기본충실
[2019.06.24 17:00:04]
SELECT DISTINCT REGEXP_SUBSTR(MAPPING_CSH_SEQ, '[^|]+', 1, LEVEL) TXT
FROM (select * from T_CT_STORYHUB_MAPPING where CSH_SEQ= 245)
CONNECT BY LEVEL <= length(regexp_replace(MAPPING_CSH_SEQ, '[^|]+',''))+1;
by 마농
[2019.06.24 17:27:30]
connect by level <= n 를 이용한 행 복제 방식은
dual 과 같이 단건 테이블에 적용하는 방식입니다.
다건의 테이블에 직접 걸면 큰일(?) 납니다.
connect by 조건이 where 조건보다 먼저 수행됩니다.
그래서 전체 건에 대한 기하급수적인 행 복제가 발생하여 느린거구요.
따라서 Where 조건이 먼저 수헹되도록 위와 같이 인라인뷰 쓰면 되구요.
인라인뷰 쓴 결과가 1건이라면? Distinct 는 필요 없겠죠.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.