"오늘의 문제를, 내일의 기록으로 남깁니다."

막연한 이론보다, 구체적인 코드가 필요할 때. 직접 겪고 해결한 문제들을 기록합니다. 실무에서 부딪히는 진짜 이슈와, 내가 이해한 방식 그대로 정리한 가이드입니다.

웹개발/Oracle

Function-Based Index (FBI)란? Oracle 인덱스 최적화 실전 가이드

자바를잡아 2025. 7. 1. 21:47
반응형

Function-Based Index (FBI)란? Oracle 인덱스 최적화 실전 가이드

Oracle에서는 WHERE 조건절에 함수가 사용되면 기존 인덱스를 타지 않는 문제가 있습니다.
이럴 때 사용하는 것이 바로 Function-Based Index (FBI)입니다.

✅ Function-Based Index란?

인덱스를 함수를 적용한 결과값 기준으로 생성하는 특수 인덱스입니다.

예시)

-- 일반 인덱스는 적용 안됨
SELECT * FROM USER_TABLE WHERE UPPER(USER_ID) = 'ADMIN';

-- 해결 방법
CREATE INDEX IDX_USER_UPPER ON USER_TABLE(UPPER(USER_ID));

✅ 사용 시 주의사항

  • 인덱스 생성 시 함수 내부 값이 NULL이면 제외됨
  • 쿼리에서도 인덱스와 동일한 함수 형식으로 작성해야 적용됨
  • 통계 정보 업데이트 필수 (ANALYZE TABLE)

📌 실제 사용 예

CREATE INDEX IDX_DATE_TRUNC ON SALES_TABLE(TRUNC(SALE_DATE));

→ 이후 쿼리에서 TRUNC 함수 사용할 경우 이 인덱스가 자동 적용됩니다.

✅ 마무리

Function-Based Index는 쿼리 성능을 획기적으로 개선할 수 있는 수단입니다.
다만 적용하려는 함수의 사용 빈도와 정확한 형태 일치 여부를 반드시 검토해야 합니다.

🔔 다음 글 예고

[Oracle 인덱스 힌트 사용법 (INDEX, FULL, NO_INDEX)]

반응형