문제
다음 SQL의 실행계획에 대한 설명으로 가장 적절한 것은?
SQLSELECT * FROM EMPLOYEE WHERE UPPER(NAME) = 'KIM'; -- NAME 컬럼에 인덱스 존재
① NAME 인덱스를 Range Scan으로 사용한다 ② NAME 인덱스를 Index Full Scan으로 사용한다 ③ 함수 기반 인덱스가 없으면 Table Full Scan을 수행한다 ④ CBO는 항상 인덱스를 우선적으로 사용한다
정답
3번
해설
③ 정답. UPPER() 함수를 사용하면 기존 인덱스를 사용할 수 없어 Table Full Scan이 수행된다. 함수 기반 인덱스(Function Based Index)가 있어야 인덱스 사용이 가능하다. ① ② 함수가 적용된 컬럼은 일반 인덱스로 검색할 수 없다. ④ CBO는 비용을 계산하여 최적의 방법을 선택하며, 함수 사용시에는 인덱스를 사용할 수 없다.