SQLD 기출문제 예상문제 101번
다음 문제를 풀어보세요.
다음 중 아래 SQL 쿼리의 실행 계획을 분석하고, 성능 개선을 위해 추가적으로 고려해야 할 사항으로 가장 적절하지 않은 것을 고르시오.
-- EMP 테이블 구조
CREATE TABLE EMP (
EMPNO NUMBER(4) PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2)
);
-- 인덱스 생성
CREATE INDEX IDX_EMP_DEPTNO ON EMP (DEPTNO);
-- SQL 쿼리
SELECT /*+ INDEX(EMP IDX_EMP_DEPTNO) */ EMPNO, ENAME, SAL
FROM EMP
WHERE DEPTNO = 20
AND SAL > (SELECT AVG(SAL) FROM EMP WHERE DEPTNO = 10);
-- 예상 실행 계획 (실제 실행 계획과 다를 수 있음)
-------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 25 | 6 (17)| 00:00:01 |
|* 1 | FILTER | | | | | |
| 2 | TABLE ACCESS BY INDEX ROWID| EMP | 1 | 25 | 3 (34)| 00:00:01 |
|* 3 | INDEX RANGE SCAN | IDX_EMP_DEPTNO | 1 | | 1 (0)| 00:00:01 |
| 4 | SORT AGGREGATE | | 1 | 6 | 3 (34)| 00:00:01 |
|* 5 | TABLE ACCESS FULL | EMP | 14 | 84 | 2 (0)| 00:00:01 |
-------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("SAL"> (SELECT AVG("SAL") FROM "EMP" "EMP"))
3 - access("DEPTNO"=20)
5 - filter("DEPTNO"=10)