문제
다음 테이블과 인덱스 상황에서 CBO가 인덱스를 사용하지 않고 FULL TABLE SCAN을 선택할 가능성이 가장 높은 경우는?
SQL-- CUSTOMER 테이블 (총 1,000,000건) -- IDX_CUSTOMER_CITY: CITY 컬럼에 생성된 인덱스 -- 도시별 데이터 분포: 서울 800,000건, 기타 200,000건
① SELECT * FROM CUSTOMER WHERE CITY = '부산' ② SELECT * FROM CUSTOMER WHERE CITY = '서울' ③ SELECT COUNT(*) FROM CUSTOMER WHERE CITY = '대구' ④ SELECT CITY FROM CUSTOMER WHERE CITY = '인천'
정답
2번
해설
CBO는 선택도가 매우 낮아 많은 행을 읽어야 하는 경우 인덱스 탐색보다 FULL TABLE SCAN이 더 효율적이라고 판단할 수 있습니다. 서울은 전체의 80%를 차지하므로 인덱스를 통한 랜덤 액세스보다 전체 스캔이 유리할 가능성이 큽니다. 반면 부산, 대구, 인천처럼 적은 비율의 값은 인덱스 사용 가능성이 더 높습니다.