Oracle & Tibero 인덱스(Index) 생성과 관리 완벽 가이드

데이터베이스 성능 최적화에서 인덱스는 필수 요소입니다. 특히 Oracle과 국산 DBMS인 Tibero에서는 인덱스 사용 방식이 매우 유사하지만, 관리와 활용에서 차이가 존재합니다. 본 글에서는 두 DBMS 환경에서 인덱스를 생성하고 관리하는 방법을 예제와 함께 정리하며, 성능 최적화 시 유용한 실무 팁도 함께 제공합니다.

인덱스(Index)란 무엇인가?

  • 정의: 테이블 내 데이터를 빠르게 검색할 수 있도록 도와주는 자료구조(B-Tree, Bitmap 등)
  • 장점: SELECT 속도 향상, 조인 성능 개선
  • 주의점: DML(INSERT, UPDATE, DELETE) 시 부하 증가, 불필요한 인덱스는 오히려 성능 저하

Oracle에서 인덱스 생성과 관리

기본 인덱스 생성

-- 단일 컬럼 인덱스
CREATE INDEX idx_item_name
ON item_table (item_name);

-- 다중 컬럼 인덱스
CREATE INDEX idx_item_id_salary
ON item_table (item_id, item_salary);
SQL

고급 인덱스 예제

-- 유니크 인덱스
CREATE UNIQUE INDEX idx_user_email
ON user_table (user_email);

-- 함수 기반 인덱스 (대소문자 무시 검색)
CREATE INDEX idx_user_name_upper
ON user_table (UPPER(user_name));
SQL

인덱스 관리

-- 인덱스 상태 확인
SELECT index_name, status
FROM user_indexes
WHERE table_name = 'USER_TABLE';

-- 인덱스 재구성(Rebuild)
ALTER INDEX idx_user_name REBUILD;

-- 인덱스 삭제
DROP INDEX idx_user_name;
SQL

TIP: Oracle에서는 함수 기반 인덱스(Function-based Index)를 적극 활용하면 LIKE 검색이나 대소문자 무시 조건에서 성능을 크게 개선할 수 있습니다.

Tibero에서 인덱스 생성과 관리

기본 인덱스 생성

-- 단일 컬럼 인덱스
CREATE INDEX idx_cust_name
ON customers (cust_name);

-- 다중 컬럼 인덱스
CREATE INDEX idx_cust_city_age
ON customers (city, age);
SQL

유니크 & 함수 기반 인덱스

-- 유니크 인덱스
CREATE UNIQUE INDEX idx_cust_email
ON customers (email);

-- 함수 기반 인덱스
CREATE INDEX idx_cust_name_lower
ON customers (LOWER(cust_name));
SQL

인덱스 관리

-- 인덱스 조회
SELECT index_name, uniqueness, status
FROM user_indexes
WHERE table_name = 'CUSTOMERS';

-- 인덱스 재구성
ALTER INDEX idx_cust_name REBUILD;

-- 인덱스 삭제
DROP INDEX idx_cust_name;
SQL

TIP: Tibero도 Oracle과 동일하게 함수 기반 인덱스를 지원합니다. 특히 국산 솔루션을 사용하는 공공기관, 금융권 프로젝트에서 인덱스 설계 시 Oracle에서 검증된 패턴을 그대로 적용할 수 있습니다.

실무에서의 인덱스 설계 및 관리 팁

  1. 자주 사용되는 WHERE 조건 컬럼에만 생성
    • 불필요한 인덱스는 DML 성능을 떨어뜨림.
  2. 다중 컬럼 인덱스 설계 시 순서 주의
    • ON (department_id, salary)department_id로 조건 검색이 자주 나올 때 효과적.
  3. 정기적인 모니터링 & 리빌드 필요
    • 대량의 UPDATE/DELETE 후에는 인덱스 조각화(fragmentation)가 발생할 수 있음.
  4. Unique 제약조건과 인덱스
    • UNIQUE 제약조건을 걸면 자동으로 인덱스가 생성되므로 중복 생성하지 않도록 주의.

마무리

Oracle과 Tibero 모두 인덱스의 생성 및 관리 방법은 유사하며, 올바른 인덱스 설계는 시스템 성능 최적화의 핵심입니다. 불필요한 인덱스는 오히려 성능 저하를 유발하므로, 조회 패턴과 트랜잭션 특성을 고려해 신중히 설계하는 것이 중요합니다.

관련 포스팅들

위로 스크롤