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 |
------------------------------------------------------------------------------------------------------