문제
다음 테이블과 인덱스 구조에서 주어진 SQL의 실행 결과로 올바른 것은?
CodeCREATE TABLE ORDERS ( ORDER_ID NUMBER, CUSTOMER_ID NUMBER, ORDER_DATE DATE, AMOUNT NUMBER ); CREATE INDEX IDX_ORDERS ON ORDERS(CUSTOMER_ID, ORDER_DATE, AMOUNT); INSERT INTO ORDERS VALUES (1, 100, '2023-01-15', 1000); INSERT INTO ORDERS VALUES (2, 100, '2023-01-20', 1500); INSERT INTO ORDERS VALUES (3, 200, '2023-01-15', 2000); INSERT INTO ORDERS VALUES (4, 200, '2023-01-25', 1200);
SQLSELECT COUNT(*) FROM ORDERS WHERE CUSTOMER_ID = 100 AND ORDER_DATE >= '2023-01-18' AND AMOUNT > 1200;
① 0 ② 1 ③ 2 ④ 3
정답
2번
해설
조건을 만족하는 행을 찾아보면: CUSTOMER_ID=100인 행은 ORDER_ID 1, 2입니다. 이 중 ORDER_DATE >= '2023-01-18'을 만족하는 것은 ORDER_ID 2('2023-01-20')뿐입니다. 그리고 AMOUNT > 1200 조건을 확인하면 ORDER_ID 2의 AMOUNT는 1500으로 조건을 만족합니다. 따라서 결과는 1건입니다. 복합 인덱스 IDX_ORDERS(CUSTOMER_ID, ORDER_DATE, AMOUNT)가 모든 조건에 효율적으로 활용됩니다.