SQL*Plus, Inline view의 활용 – 부분범위처리로의 유도
/** * 수정전 */ SELECT a.부서명 , b,성명 , c.년월 , c.급여총액 FROM 부서 a, 사원 b, 급여 c WHERE b.부서코드 = a.부서코드 AND c.사원번호 = b.사원번호 AND a.위치 = '서울' AND b.직책 = '과장' AND c.년월 BETWEEN '199001' AND '199712' ORDER BY a.부서명, b.입사일, c.년월; /* 부분범위처리 불가능 */
/** * 수정후 */ SELECT /*+ ORDERED USE_NL(x y) */ x.부서명 , x.입사일 , x.사원번호 , x.성명 , y.년월 , y.급여총액 FROM ( SELECT a.부서명 , b.입사일 , b.사원번호 , MAX(b.성명) FROM 부서 a, 사원 b WHERE b.부서코드 = a.부서코드 AND a.위치 = '서울' AND b.직책 = '과장' GROUP BY a.부서명, b.입사일, b.사원번호 ) x, 급여 y /** * 꼭 필요한 부분만 전체범위처리 */ WHERE y.사원번호 = x.사원번호 AND y.년월 BETWEEN '199001' AND '199712'; /** * 전체적으로는 부분범위처리 */
원문 출처
Encore – 대용량 데이터베이스