문제
다음 테이블과 인덱스 설정에서 주어진 SQL의 실행 결과로 가장 적절한 것은?
SQLCREATE TABLE SALES ( SALE_DATE DATE, PRODUCT_ID INT, AMOUNT INT ); CREATE INDEX IX_SALES ON SALES(SALE_DATE, PRODUCT_ID); -- 데이터 INSERT INTO SALES VALUES('2023-01-01', 1, 100); INSERT INTO SALES VALUES('2023-01-02', 1, 200); INSERT INTO SALES VALUES('2023-01-01', 2, 150); INSERT INTO SALES VALUES('2023-01-03', 1, 300); SELECT COUNT(*) FROM SALES WHERE PRODUCT_ID = 1 AND SALE_DATE BETWEEN '2023-01-01' AND '2023-01-02';
① 1 ② 2 ③ 3 ④ 인덱스를 사용할 수 없어 Full Table Scan 발생
정답
2번
해설
② PRODUCT_ID = 1이고 SALE_DATE가 '2023-01-01'과 '2023-01-02' 사이인 데이터는 ('2023-01-01', 1, 100)과 ('2023-01-02', 1, 200) 총 2건입니다. 인덱스가 (SALE_DATE, PRODUCT_ID) 순서로 구성되어 있지만, 범위조건인 SALE_DATE를 먼저 처리하고 등치조건인 PRODUCT_ID로 필터링하여 결과를 얻을 수 있습니다. ① 1건이 아닙니다. ③ 3건이 아닙니다. ④ 인덱스는 사용 가능합니다.