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 – 대용량 데이터베이스