[DB] WITH절

배세훈·2022년 4월 14일
0

DB

목록 보기
15/19

WITH절이란?

  • 이름이 부여된 서브쿼리
  • 임시테이블을 만든다는 관점에서보면 VIEW와 쓰임새가 비슷한데 차이점이 있다면 VIEW는 한번 만들어놓으면 DROP 할 때까지 없어지지 않지만 WITH절의 경우 한번 실행할 쿼리문내에 정의되어 있을 경우 그 쿼리문안에서만 실행된다는 차이점이 있습니다.
  • Oracle 경우 9이상

WITH절을 사용하는 이유

  • WITH절은 복잡한 SQL에서 동일 블록에 대해 반복적으로 SQL문을 사용하는 경우 그 블록에 이름을 부여하여 재사용 할 수 있게 함으로써 쿼리 성능을 높일 수 있었는데 WITH절을 이용하여 미리 이름을 부여하여 Query Block을 만들 수 있습니다. 자주 실행되는 경우 한번만 Parsing되고 Plan계획이 수립되므로 쿼리의 성능향상에 도움이 됩니다.

WITH절 예시

WITH V_USERS AS
(
	SELECT * FROM USERS U JOIN MEMBERSHIP M ON U.USER_NUM = M.USER_NUM
)SELECT * FROM V_USERS;
-- 다중 WITH문
WITH V_USERS AS (
	SELECT * FROM USERS;
),
V_USERS2 AS (
	SELECT * FROM MEMBERSHIP
    UNION ALL
    SELECT * FROM V_USERS
)
SELECT * FROM V_USERS2
profile
성장형 인간

0개의 댓글