web developer

[oracle] WITH절 본문

SQL/Oracle SQL

[oracle] WITH절

trueman 2022. 11. 22. 23:15
728x90
728x90

WITH절이란


WITH절은 오라클9 이후 버전부터 사용이 가능하며 이름이 부여된 서브쿼리라고 생각하시면 됩니다. 


* 차이점

VIEW는 한번 만들어놓으면 DROP할때까지 없어지지 않지만 WITH절의 같은경우 한번 실행할 쿼리문내에 정의되어 있을경우, 그 쿼리문안에서만 실행된다는 차이점이 있습니다.


WITH절을 사용하는 이유


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


WITH temp AS (
    SELECT * FROM TEST_01.TOY_BOARD
)
SELECT * FROM temp;


WITH temp1 AS (
    SELECT 'MAX' AS CATEGORY, MAX(SCORE) FROM TEST_01.TOY_BOARD WHERE ROLE ='선수'
), 
temp2 AS (
	SELECT 'MIN' AS CATEGORY, MIN(SCORE) FROM TEST_01.TOY_BOARD WHERE ROLE ='선수'
	UNION ALL 
	SELECT * FROM temp1
)
SELECT * FROM temp2;


출처 : https://coding-factory.tistory.com/445

728x90
728x90