Oracle의 Index Partitioning(인덱스 파티션)은 대용량 테이블의 파티션 테이블에 대한 인덱스를 효율적으로 관리하는 기법입니다.
테이블이 파티션되어 있으면, 인덱스도 같은 방식으로 파티션하면 성능과 관리 효율이 향상됩니다.
✔ 장점
Oracle은 테이블의 파티션 방식에 따라 인덱스를 다르게 설정할 수 있습니다.
📌 예제: RANGE PARTITIONED TABLE + LOCAL INDEX
CREATE TABLE orders (
order_id NUMBER,
customer_id NUMBER,
order_date DATE,
amount NUMBER
)
PARTITION BY RANGE (order_date) (
PARTITION p_2023 VALUES LESS THAN (TO_DATE('2024-01-01', 'YYYY-MM-DD')),
PARTITION p_2024 VALUES LESS THAN (TO_DATE('2025-01-01', 'YYYY-MM-DD'))
);
CREATE INDEX orders_idx ON orders(customer_id)
LOCAL; ✔ 특징
orders 테이블이 order_date 기준으로 RANGE PARTITION되어 있으므로, orders_idx 인덱스도 각 파티션별로 생성됨.📌 예제: GLOBAL HASH PARTITIONED INDEX
CREATE INDEX orders_gidx ON orders(customer_id)
GLOBAL PARTITION BY HASH (customer_id)
PARTITIONS 4; ✔ 특징
📌 예제: 글로벌 논파티션 인덱스
CREATE INDEX orders_gnidx ON orders(customer_id) GLOBAL; ✔ 특징
orders 테이블을 대상으로 하나의 인덱스만 존재.Index Partition Pruning(인덱스 절단)은 불필요한 인덱스 파티션을 자동으로 제외하여 성능을 최적화하는 기법입니다. Pruning은 참고로 원래 가지치기 라는 뜻이 있습니다.
Oracle은 로컬 인덱스를 사용할 경우 자동으로 인덱스 프루닝을 수행합니다.
SELECT * FROM orders WHERE order_date BETWEEN TO_DATE('2024-01-01', 'YYYY-MM-DD')
AND TO_DATE('2024-12-31', 'YYYY-MM-DD'); ✔ 결과:
p_2024 파티션만 검색 → 해당 파티션의 인덱스만 접근 → 불필요한 인덱스 검색 제거 (프루닝)SELECT * FROM orders WHERE customer_id = 12345; ✔ 결과:
테이블에 새로운 파티션을 추가하면 LOCAL INDEX는 자동 추가되지만, GLOBAL INDEX는 수동으로 관리해야 함.
📌 로컬 인덱스 자동 추가
ALTER TABLE orders ADD PARTITION p_2025 VALUES LESS THAN (TO_DATE('2026-01-01', 'YYYY-MM-DD')); 📌 글로벌 인덱스는 수동 재구성 필요
ALTER INDEX orders_gidx REBUILD; 📌 특정 파티션의 인덱스만 삭제
ALTER INDEX orders_idx DROP PARTITION p_2023; 📌 인덱스 파티션만 개별적으로 재구성
ALTER INDEX orders_idx REBUILD PARTITION p_2024; | 구분 | 로컬 파티션 인덱스 (LOCAL) | 글로벌 파티션 인덱스 (GLOBAL) |
|---|---|---|
| 테이블 파티션과 일치 여부 | ✅ 동일한 파티션 방식 적용 | ❌ 독립적인 방식 적용 |
| 프루닝 지원 여부 | ✅ 지원 (자동 최적화) | ✅ 지원 (조건 충족 시) |
| 관리 편의성 | ✅ 테이블 파티션 추가/삭제 시 자동 반영 | ❌ 직접 재구성 필요 |
| 특정 파티션만 인덱싱 가능 | ✅ 가능 (독립적 유지) | ❌ 전체 인덱스 유지 |
| 범위 조회 최적화 | ✅ 특정 파티션 인덱스만 조회 | ❌ 전체 인덱스를 검색 가능 |
✅ Oracle Index Partitioning은 대용량 데이터에서 인덱스 성능을 최적화하는 필수적인 기법
✅ 로컬 인덱스는 테이블과 동일한 파티션 구조를 유지하여 관리가 용이하며, 프루닝을 통한 최적화 가능
✅ 글로벌 인덱스는 특정 조건에서 유리하지만, 관리가 어렵고 전체 인덱스 스캔 가능성이 존재
✅ 업무 환경에 맞게 적절한 인덱스 파티션을 선택하는 것이 중요! 🚀
요양원 선택 전 반드시 확인해야 할 체크리스트를 공개합니다. 공식 평가 자료 조회법, 방문 시 확인…
공공기관 채용 비리의 실태와 피해 지원자의 대응법을 정리했습니다. 채용 비리 신고 방법, 공익신고자 보호제도, 취준생…
주식 손실을 세금 절약에 활용하는 합법적 방법을 공개합니다. 해외주식 손익통산, ISA 계좌 활용, 연금계좌 절세까지…
배달이 예상 시간보다 크게 늦으면 취소·환불을 요청할 수 있습니다. 배달앱별 지연 취소 방법과 잘못 배달됐을…
통신비 절약의 핵심은 요금제 최적화입니다. 내 데이터 사용량 확인법, 알뜰폰 전환 비교, 위약금 없이 요금제…