문제
다음 테이블과 인덱스가 있을 때, CBO가 인덱스 대신 FULL TABLE SCAN을 선택할 가능성이 가장 높은 쿼리는?
[테이블 정보]
- CUSTOMER 테이블: 1,000,000건
- 인덱스: IDX_CUST_GRADE(GRADE)
- GRADE 컬럼 분포: 'VIP' 10%, 'GOLD' 20%, 'SILVER' 70%
① SELECT * FROM CUSTOMER WHERE GRADE = 'VIP' ② SELECT COUNT(*) FROM CUSTOMER WHERE GRADE = 'GOLD' ③ SELECT * FROM CUSTOMER WHERE GRADE = 'SILVER' ④ SELECT GRADE FROM CUSTOMER WHERE GRADE = 'VIP'
정답
3번
해설
③ GRADE = 'SILVER' 조건은 전체 데이터의 70%(700,000건)를 조회하므로 CBO는 FULL TABLE SCAN을 선택할 가능성이 높습니다. 일반적으로 전체 데이터의 15-20% 이상 조회 시 FULL TABLE SCAN이 더 효율적으로 판단됩니다. ① VIP는 10%로 인덱스 스캔이 효율적입니다. ② COUNT 쿼리는 인덱스만으로 처리 가능합니다. ④ 커버링 인덱스로 처리 가능하므로 인덱스 스캔을 선택합니다.