SQLD 기출문제 예상문제 197

다음 문제를 풀어보세요.

다음 중 아래 SQL 쿼리의 응답 시간 개선을 위해 적용할 수 있는 가장 적절한 인덱스 전략을 고르시오.

SELECT O.ORDER_ID, C.CUSTOMER_NAME, SUM(OD.QUANTITY * P.PRICE) AS TOTAL_AMOUNT
FROM ORDERS O
JOIN CUSTOMERS C ON O.CUSTOMER_ID = C.CUSTOMER_ID
JOIN ORDER_DETAILS OD ON O.ORDER_ID = OD.ORDER_ID
JOIN PRODUCTS P ON OD.PRODUCT_ID = P.PRODUCT_ID
WHERE C.CITY = 'Seoul'
AND O.ORDER_DATE BETWEEN '2023-01-01' AND '2023-03-31'
GROUP BY O.ORDER_ID, C.CUSTOMER_NAME
HAVING SUM(OD.QUANTITY * P.PRICE) > 100000;
ORDER BY TOTAL_AMOUNT DESC;

다음과 같은 테이블 구조를 가정합니다:

CREATE TABLE CUSTOMERS (
    CUSTOMER_ID INT PRIMARY KEY,
    CUSTOMER_NAME VARCHAR(255),
    CITY VARCHAR(255)
);

CREATE TABLE ORDERS (
    ORDER_ID INT PRIMARY KEY,
    CUSTOMER_ID INT,
    ORDER_DATE DATE,
    FOREIGN KEY (CUSTOMER_ID) REFERENCES CUSTOMERS(CUSTOMER_ID)
);

CREATE TABLE ORDER_DETAILS (
    ORDER_ID INT,
    PRODUCT_ID INT,
    QUANTITY INT,
    PRIMARY KEY (ORDER_ID, PRODUCT_ID),
    FOREIGN KEY (ORDER_ID) REFERENCES ORDERS(ORDER_ID),
    FOREIGN KEY (PRODUCT_ID) REFERENCES PRODUCTS(PRODUCT_ID)
);

CREATE TABLE PRODUCTS (
    PRODUCT_ID INT PRIMARY KEY,
    PRICE DECIMAL(10, 2)
);