데이터베이스

함수 기반 인덱스(Function-based indexing) 오라클

스윙스윙 2021. 9. 10. 17:54

▣ 함수 기반 인덱스(Function-based indexing) 오라클

● 함수 기반 인덱스의 장점

- 계산 값에 대한 인덱스 스캔 가능
- 인덱스 컬럼이 Where 절에서 가공 또는 변경돼도 인덱스 이용 가능

함수 기반 인덱스를 이용하면 계산 값을 도출하는 SQL도 인덱스를 이용할 수 있음

SQL의 계산 값이 중요한 업무라면 함수 기반 인덱스를 통해 성능을 향상시킬 수 있음

● 함수 기반 인덱스의 단점

- DML시 부하 발생
- 인덱스의 유연성 저하

함수 기반 인덱스는 Where 조건에 해당하는 연산자를 그대로 사용할 경우에만 가능하므로

다른 일반 엑세스 유형을 수용하기에 적합하지 않아 유연성이 많이 떨어짐

CREATE [UNIQUE] INDEX 인덱스 명 

ON 테이블 명(컬럼 명, 컬럼 명 | 함수 명, 함수 계산식); 

 


2017년 62번

WHERE ((Salary * CommissionPercent) + Salary) > 15000; 

조건절에 컬럼값을 그대로 사용하지 않고 가공해서 사용하고 있으므로 일반적인 인덱스를 활용할 수 없음

이런 유형의 질의 사용 빈도가 높다면 인덱스를 생성할 때부터 미리 가공된 함수기반 인덱스를 

사용하는 것이 효율적임

 


2019년 75번

정답 : 2번

한 릴레이션 내에 존재하는 여러 속성들을 묶어 하나의 인덱스로 만든 것을 결합 인덱스라고 함

 

<결합 인덱스 사용조건>

- 선행 속성이 WHERE 조건으로 제공되지 않으면 해당 인덱스 사용 불가

- 결합 인덱스는 선행 속성이 "="로 비교되어야 해당 속성도 인덱스 사용

- 인덱스 속성이 함수, 수식 등으로 가공되면 인덱스 사용 불가

- NOT IN, <>, NOT LIKE 등의 부정 연산은 인덱스 사용 불가

- NULL 값은 인덱스에 참여하지 않음