SELECT SUM(ORDQTY)
FROM ORDER
WHERE ORD_DATE LIKE '200512%';
SELECT ORD_DEPT, COUNT(*)
FROM ORDER
WHERE ORD_DATE LIKE '200512%'
GROUP BY ORD_DEPT;
분석 : SELECT-LIST나 HAVING절에 그룹함수를 사용하였다면 부분범위 처리를 할 수 없다.
SELECT ORD_DATE, ORDQTY * 1000
FROM ORDER
WHERE ORD_DATE LIKE '200512%'
ORDER BY ORD_DATE;
분석 : ORDER BY가 사용되었다면 마찬가지로 전체범위를 처리할 수 밖에 없다. Driving역할을 하는 인덱스와 ORDER BY에 사용된 컬럼이 동일하다면 비록 ORDER BY를 사용하였더라도 부분범위로 처리 가능
(인덱스로 처리하여 바로 리턴하는 부분범위 처리방식으로 실행계획을 수립하게 됨)
SELECT DEPTNO, EMPNO
FROM EMP1
WHERE SAL > 1000000
UNION
SELECT DEPTNO, EMPNO
FROM EMP2
WHERE HIREDATE BETWEEN '01-JAN-2005' AND SYSDATE;
분석 :
UNION, MINUS, INTERSECT를 사용한 SQL은 부분범위로 처리할 수 없다.
(집합연산은 그 결과가 반드시 유일해야하기 때문)
UNION ALL 부분범위처리를 한다.
(중복을 확인할 필요가 없다)
- 강좌 URL : http://www.gurubee.net/lecture/2619
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.