SQL*Plus, Inline view의 활용 – 단계적 조인을 위한 활용: Group by 후 Join

SQL*Plus, Inline view의 활용 – 단계적 조인을 위한 활용: Group by 후 Join

/**
 * 수정전
 */
SELECT 
	y.DEPT_NAME
	, SUM(x.SALE_QTY)
	, SUM(x.SALE_AMT)
FROM SALE x, DEPT y
WHERE x.DEPT_CD = y.DEPT_CD
AND x.YYMM = :IN_DATE
AND x.SAUP = :SAUP
GROUP BY y.DEPT_NAME;

먼저 Join한 후 Group by함으로써 나중에 합쳐질 row들까지 Join.

/**
 * 수정후
 */
SELECT
	y.DEPT_NAME
	, S_QTY
	, S_AMT
FROM
(
	SELECT
		DEPT_CD
		, SUM(SALE_QTY) S_QTY
		, SUM(SALE_AMT) S_AMT
	FROM SALE
	WHERE YYMM = :IN_DATE
	AND SAUP = :SAUP
	GROUP BY DEPT_CD
) x, DEPT y
WHERE x.DEPT_CD = y.DEPT_CD;

다량의 데이터를 Inline view에서 먼저 Group by하여 row수를 줄인 후 Join.

원문 출처
Encore – 대용량 데이터베이스

Leave a Reply