SQLD 기출문제 예상문제 105번
다음 문제를 풀어보세요.
다음은 온라인 쇼핑몰의 주문 테이블(ORDERS)과 고객 테이블(CUSTOMERS)에 대한 SQL 튜닝 시나리오입니다. 주문량이 많은 특정 기간 동안 고객별 총 주문 금액을 조회하는 쿼리의 성능을 개선하기 위해 인덱스를 생성하려고 합니다. 다음 중 가장 효과적인 인덱스 구성 방안을 고르시오.
-- ORDERS 테이블 구조
CREATE TABLE ORDERS (
ORDER_ID NUMBER PRIMARY KEY,
CUSTOMER_ID NUMBER NOT NULL,
ORDER_DATE DATE NOT NULL,
ORDER_AMOUNT NUMBER NOT NULL,
FOREIGN KEY (CUSTOMER_ID) REFERENCES CUSTOMERS(CUSTOMER_ID)
);
-- CUSTOMERS 테이블 구조
CREATE TABLE CUSTOMERS (
CUSTOMER_ID NUMBER PRIMARY KEY,
CUSTOMER_NAME VARCHAR2(50) NOT NULL,
CUSTOMER_ADDRESS VARCHAR2(100)
);
-- 성능 개선 대상 쿼리
SELECT
C.CUSTOMER_NAME,
SUM(O.ORDER_AMOUNT) AS TOTAL_ORDER_AMOUNT
FROM
ORDERS O
JOIN
CUSTOMERS C ON O.CUSTOMER_ID = C.CUSTOMER_ID
WHERE
O.ORDER_DATE BETWEEN DATE '2023-01-01' AND DATE '2023-01-31'
GROUP BY
C.CUSTOMER_NAME
ORDER BY
TOTAL_ORDER_AMOUNT DESC;