SQL문을 작성하다 보면 Query를 반복해서 사용하는 경우가 발생합니다.
한 두번의 반복은 괜찮지만, 그 수가 많아질수록 가독성이 떨어지고 재사용할 수 없으며
매번 동일한 Query를 작성하거나 수정해야 합니다.
WITH문을 통해 이럼 문제점을 해소합니다.
복잡한 SQL에서 반복적으로 사용되는 서브쿼리의 블록을
하나의 WITH문 블록으로 만들어 재사용 할 수 있게 함으로써 쿼리 성능을 높일 수 있습니다.
단일 WITH문
WITH test as
(
select 'WITH문' as str
from dual
)
SELECT *
FROM test
다중 WITH문
WITH test1 as (
select 'WITH 1' as str1
from dual
),
test2 as (
select str1
from test1
UNION ALL
select 'WITH 2' as str2
from dual
)
SELECT *
FROM test2
서브쿼리 WITH 주 활용 select문의 결과를 where절에서 이름을 가진 서브쿼리를 하나의 변수처럼 사용하고 싶을 때 사용 정의한 후 사용하는 구문 위치 select, from, where 독립적 장점 코딩할 때는 편하다 가독성이 높고, 재사용할 수 있다 단점 가독성이 낮음, 쿼리가 복잡해짐 튜닝시 적절하게 가공되지 않으면 메모리 로드가 많이 걸림