Oracle/SQL2009. 11. 15. 17:02
오라클에서 WITH ..AS의 역할과 특징은 무엇일까?

한 복잡한 쿼리내에 SELECT구문에서 같은 쿼리 블럭이 한번 이상 발생할 때 사용할 수 있다.

쿼리 블럭의 결과를 회수하고, 사용자 테이블 스페이스에 그것을 저장한다. 그래서 WITH 항을 사용하면 성능이 개선된다.


예제)

WITH test AS
(
    SELECT 'A1' a, 'A2' b, 1 c FROM dual
    UNION ALL
    SELECT 'A2', 'A3', 2 FROM dual
    UNION ALL
    SELECT 'A2', 'A4', 2 FROM dual
    UNION ALL
    SELECT 'A4', 'A5', 3 FROM dual
    UNION ALL
    SELECT 'A5', 'A6', 2 FROM dual
    UNION ALL
    SELECT 'A4', 'A7', 2 FROM dual
    UNION ALL
    SELECT 'A11', 'A7', 3 FROM dual
    UNION ALL
    SELECT 'A1', 'A11', 2 FROM dual
)
SELECT a, b, c,
    (SELECT EXP(SUM(LN(c)))
     FROM test
     START WITH b = t.b
     CONNECT BY PRIOR a = b) d
FROM test t
START WITH a = 'A1'
CONNECT BY PRIOR b = a;


참조 : 오라클 교재 SQL FundmentalⅡ  6 - 22

'Oracle > SQL' 카테고리의 다른 글

multi table insert  (0) 2009.12.14
index를 사용하여 쿼리를 튜닝해보자  (0) 2009.11.16
계층형 쿼리(Hierachical select)  (0) 2009.11.14
입력 소요시간 비교(insert 여러건 vs connect by 이용)  (0) 2009.11.11
Merge  (0) 2009.11.09
Posted by 자수성가한 부자