문제. 아래 실행결과를 반환하기 위해 최근 7일 이내에 주문한 내역이 있는 나이가 20세인 고객을 고객번호가 빠른 순서로 10건 조회하는 SQL을 작성하고, 아래 실행 계획으로 수행될 수 있도록 필요한 힌트를 기술하시오. (단, 20세는 현재 일자에서 20년을 뺀 것이라고 가정)
[오브젝트]
CREATE TABLE 고객(
고객번호 NUMBER
,고객명 VARCHAR2(100)
,출생연도 VARCHAR2(4)
,등급코드 VARCHAR2(1)
,CONSTRAINT 고객_PK PRIMARY KEY(고객번호)
);
CREATE TABLE 주문(
주문번호 NUMBER
,주문일시 DATE
,고객번호 NUMBER
,CONSTRAINT 주문_PK PRIMARY KEY(주문번호)
);
CREATE TABLE 고객등급(
등급코드 VARCHAR2(1)
,등급명 VARCHAR2(100)
,CONSTRAINT 고객등급_PK PRIMARY KEY(등급코드)
);
CREATE INDEX 고객_X01 ON 고객(출생연도, 고객번호);
CREATE INDEX 주문_X01 ON 주문(고객번호, 주문일시);
[실행결과]
고객번호 고객명 등급명
------- -------- -------
...
10 행이 선택되었습니다.
[실행계획]
-----------------------------------------------------
| Id | Operation | Name |
-----------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | TABLE ACCESS BY INDEX ROWID | 고객등급 |
|* 2 | INDEX UNIQUE SCAN | 고객등급_PK|
|* 3 | COUNT STOPKEY | |
| 4 | VIEW | |
| 5 | NESTED LOOPS SEMI | |
| 6 | TABLE ACCESS BY INDEX ROWID| 고객 |
|* 7 | INDEX RANGE SCAN | 고객_X1 |
|* 8 | INDEX RANGE SCAN | 주문_X1 |
-----------------------------------------------------
'SQL > 퀴즈' 카테고리의 다른 글
| Q7) 조인순서, 인덱스(Access Path) (0) | 2024.11.14 |
|---|---|
| Q6) 집계 쿼리 (0) | 2024.11.14 |
| Q5) Delete & Insert 문 튜닝 (0) | 2024.11.11 |
| Q4) 배치쿼리 & ETL (0) | 2024.11.11 |
| Q3) MINUS (0) | 2024.11.07 |