SQLD 기출문제 예상문제 109번
다음 문제를 풀어보세요.
다음 중 아래 SQL의 실행 계획을 분석한 결과로 가장 적절하지 않은 것을 고르시오.
-- 테이블 구조:
CREATE TABLE ORDERS (
ORDER_ID NUMBER PRIMARY KEY,
CUSTOMER_ID NUMBER,
PRODUCT_ID NUMBER,
ORDER_DATE DATE,
QUANTITY NUMBER,
PRICE NUMBER
);
CREATE INDEX IDX_ORDERS_CUSTOMER_ID ON ORDERS (CUSTOMER_ID);
-- SQL 쿼리:
SELECT
O.ORDER_ID,
O.ORDER_DATE,
O.QUANTITY,
O.PRICE
FROM
ORDERS O
WHERE
O.CUSTOMER_ID = :CUSTOMER_ID
AND O.ORDER_DATE >= TRUNC(SYSDATE - 30)
ORDER BY
O.ORDER_DATE DESC;
-- 실행 계획 (예시):
-- Plan Hash Value : 1234567890
--
-- ----------------------------------------------------------------------------------------------------
-- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-- ----------------------------------------------------------------------------------------------------
-- | 0 | SELECT STATEMENT | | 100 | 1600 | 50 (3) | 00:00:01 |
-- | 1 | SORT ORDER BY | | 100 | 1600 | 50 (3) | 00:00:01 |
-- |* 2 | TABLE ACCESS BY INDEX ROWID| ORDERS | 100 | 1600 | 49 (3) | 00:00:01 |
-- |* 3 | INDEX RANGE SCAN | IDX_ORDERS_CUSTOMER_ID | 200 | | 2 (0) | 00:00:01 |
-- ----------------------------------------------------------------------------------------------------
--
-- Predicate Information (identified by operation id):
-- ---------------------------------------------------
--
-- 2 - filter("O"."ORDER_DATE">=TRUNC(SYSDATE@!-30))
-- 3 - access("O"."CUSTOMER_ID"=:CUSTOMER_ID)