SQLP CBT 기출문제 예상문제 460번
다음 문제를 풀어보세요.
다음 SQL에 대한 실행 계획 분석 결과, 인덱스 스캔 효율을 극대화하기 위한 옵티마이저의 동작 방식으로 가장 적절한 것을 고르시오.
[테이블 구조]
CREATE TABLE TRANSACTIONS (
TXN_ID NUMBER PRIMARY KEY,
ACCT_NO VARCHAR2(20),
TXN_DATE DATE,
TXN_TYPE VARCHAR2(10),
AMOUNT NUMBER
);
CREATE INDEX IDX_TXN_ACCT_DATE_TYPE ON TRANSACTIONS (ACCT_NO, TXN_DATE, TXN_TYPE);
[SQL 쿼리]
SELECT /*+ INDEX(T IDX_TXN_ACCT_DATE_TYPE) */ ACCT_NO, TXN_DATE, AMOUNT FROM TRANSACTIONS T
WHERE ACCT_NO = '1001' AND TXN_DATE BETWEEN '2023-01-01' AND '2023-01-31'
AND TXN_TYPE = 'DEPOSIT';
[옵티마이저 실행 계획 예시 (Oracle)]
------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 10 | 1170 | 4 (0)| 00:00:01 |
|* 1 | TABLE ACCESS BY INDEX ROWID | TRANSACTIONS | 10 | 1170 | 4 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | IDX_TXN_ACCT_DATE_TYPE | 10 | | 3 (0)| 00:00:01 |
------------------------------------------------------------------------------------------------------