문제 링크 : https://velog.io/@yooha9621/SQLP실기문제-소트튜닝14번
1. 상품 테이블 FULL SCAN
2. 계약_X1(지점ID) 인덱스 스캔
3. 두 테이블 해시 조인 후 전체 정렬
4. 정렬 후 부분범위처리
1.계약의 계약일시 기준으로 부분범위 처리 할 수 있도록 계약 테이블을 드라이빙 테이블로 두고 계약일시 DESC 를 차례로 읽을 수 있도록 계약_X1 인덱스를 재구성한다.
[인덱스 재구성]
계약_X1 : 지점ID + 계약일시
SQL > SELECT *
FROM (
SELECT /*+ LEADING(C) USE_NL(P) */
C. 계약번호, C. 상품코드, P. 상품명, P.상품구분코드, C. 계약일시, C.계약금액
FROM 계약 C, 상품 P
WHERE C.지점 ID = :BRCH_ID
AND P.상품코드 = C.상품코드
ORDER BY C.계약일시 DESC ) X
WHERE ROWNUM <= 50
🍎 정리
- 계약일시 DESC 정렬이 가능한 인덱스를 둔 계약 테이블을 드라이빙 테이블로 두어 상품 테이블과 부분범위 처리된 데이터량만큼 상품 코드 조건으로 NL 조인한다.