SQLD 기출문제 예상문제 36번
다음 문제를 풀어보세요.
다음 중 아래 SQL 쿼리의 성능 개선을 위해 고려할 수 있는 가장 적절한 인덱스 전략을 고르시오.
SELECT
O.ORDER_ID,
C.CUSTOMER_NAME,
SUM(OI.QUANTITY * P.PRICE) AS TOTAL_AMOUNT
FROM
ORDERS O
JOIN
CUSTOMERS C ON O.CUSTOMER_ID = C.CUSTOMER_ID
JOIN
ORDER_ITEMS OI ON O.ORDER_ID = OI.ORDER_ID
JOIN
PRODUCTS P ON OI.PRODUCT_ID = P.PRODUCT_ID
WHERE
O.ORDER_DATE BETWEEN '2023-01-01' AND '2023-01-31'
GROUP BY
O.ORDER_ID, C.CUSTOMER_NAME
HAVING
SUM(OI.QUANTITY * P.PRICE) > 1000
ORDER BY
TOTAL_AMOUNT DESC;
다음 테이블 구조를 참고하세요:
CREATE TABLE CUSTOMERS (
CUSTOMER_ID INT PRIMARY KEY,
CUSTOMER_NAME 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_ITEMS (
ORDER_ITEM_ID INT PRIMARY KEY,
ORDER_ID INT,
PRODUCT_ID INT,
QUANTITY INT,
FOREIGN KEY (ORDER_ID) REFERENCES ORDERS(ORDER_ID)
);
CREATE TABLE PRODUCTS (
PRODUCT_ID INT PRIMARY KEY,
PRICE DECIMAL(10, 2)
);