Oracle에서 성능 최적화를 논할 때 빠질 수 없는 요소 중 하나가 바로 인덱스(Index)입니다. 효율적인 쿼리 성능을 위해 인덱스가 어떻게 구성되어 있는지를 정확히 이해하는 것은 매우 중요하며, 이때 필수적으로 활용되는 시스템 뷰가 바로 ALL_IND_COLUMNS
입니다. 본 글에서는 Oracle의 ALL_IND_COLUMNS 뷰를 중심으로, 인덱스에 포함된 컬럼 정보를 조회하고 실무에서 활용할 수 있는 다양한 예제를 제공하며, 관련 뷰와의 차이점도 함께 설명합니다.
1. ALL_IND_COLUMNS란?
ALL_IND_COLUMNS
는 사용자가 접근 가능한 인덱스에 대해 어떤 컬럼이 포함되어 있는지를 나타내는 뷰입니다. 해당 뷰를 통해 인덱스의 정렬 방식(ASC/DESC), 컬럼 순서 등을 확인할 수 있습니다.
2. 주요 컬럼 설명
컬럼명 | 설명 |
---|---|
INDEX_NAME | 인덱스의 이름 |
TABLE_NAME | 인덱스가 속한 테이블 이름 |
TABLE_OWNER | 테이블의 소유자 |
COLUMN_NAME | 인덱스에 포함된 컬럼 이름 |
COLUMN_POSITION | 인덱스 내 컬럼의 순서 |
DESCEND | 정렬 순서 (ASC/DESC) |
3. 관련 뷰 비교
뷰 이름 | 설명 | 비고 |
---|---|---|
ALL_IND_COLUMNS | 사용자가 접근 가능한 인덱스 컬럼 정보 | 컬럼 기준으로 상세 정보 확인 |
ALL_INDEXES | 사용자가 접근 가능한 인덱스의 기본 정보 | 인덱스 속성 및 구조 정보 |
DBA_IND_COLUMNS | DB 전체 인덱스 컬럼 정보 | DBA 전용 |
4. 실무 활용 예제
4.1 특정 테이블의 인덱스 컬럼 목록 조회
SELECT INDEX_NAME, COLUMN_NAME, COLUMN_POSITION, DESCEND
FROM ALL_IND_COLUMNS
WHERE TABLE_NAME = 'EMPLOYEES'
AND TABLE_OWNER = 'HR';
4.2 인덱스별 구성 컬럼 파악
SELECT INDEX_NAME, LISTAGG(COLUMN_NAME, ', ')
WITHIN GROUP (ORDER BY COLUMN_POSITION) AS INDEX_COLUMNS
FROM ALL_IND_COLUMNS
WHERE TABLE_OWNER = 'HR'
GROUP BY INDEX_NAME;
4.3 DESC 정렬된 인덱스만 조회
SELECT INDEX_NAME, COLUMN_NAME, DESCEND
FROM ALL_IND_COLUMNS
WHERE DESCEND = 'DESC';
4.4 인덱스 컬럼과 인덱스 속성 조합 보기
SELECT a.INDEX_NAME, a.COLUMN_NAME, b.UNIQUENESS
FROM ALL_IND_COLUMNS a
JOIN ALL_INDEXES b
ON a.INDEX_NAME = b.INDEX_NAME
WHERE a.TABLE_NAME = 'ORDERS';
5. 인덱스 컬럼 관리 전략
- 정기적 인덱스 점검: 불필요한 인덱스를 제거하고 중복 인덱스를 식별합니다.
- 쿼리 최적화 기반: 자주 사용하는 WHERE 절에 포함된 컬럼 위주로 인덱스를 설계합니다.
- 복합 인덱스 확인: 컬럼 순서가 성능에 직접적인 영향을 미치므로 순서 분석은 필수입니다.
- 통계 정보 갱신: 인덱스 관련 성능 향상을 위해 DB 통계 갱신을 주기적으로 수행합니다.
6. ALL_IND_COLUMNS 주요 활용 목적 요약
활용 목적 | 사용 쿼리 예시 | 설명 |
---|---|---|
인덱스 성능 분석 | WHERE 절 기반 SELECT | 적절한 컬럼 인덱스 사용 확인 |
인덱스 설계 리뷰 | LISTAGG + GROUP BY | 복합 인덱스 컬럼 구성 확인 |
정렬 방식 확인 | DESCEND 컬럼 확인 | 오름차순/내림차순 인덱싱 분석 |
7. 결론
Oracle에서 ALL_IND_COLUMNS 뷰는 성능 최적화 및 데이터 모델링 품질 향상을 위해 꼭 활용해야 할 필수 시스템 뷰입니다. 특히 ALL_INDEXES
뷰와의 조합은 인덱스 구조 분석과 불필요한 인덱스 제거에 매우 효과적입니다.
지속적인 인덱스 모니터링은 쿼리 성능 개선뿐만 아니라, 저장공간 절약과 유지보수 비용 절감에도 크게 기여합니다.
8. 참고자료
- Oracle Database 21c Reference: https://docs.oracle.com/en/database/
- 실전 SQL 성능 튜닝 가이드
- Oracle SQL Developer 공식 문서
'Database' 카테고리의 다른 글
[Oracle] 오라클 ALL_IND_PARTITIONS 뷰로 인덱스 파티션 분석 및 관리 전략 (0) | 2025.06.16 |
---|---|
[Oracle] 오라클 ALL_IND_EXPRESSIONS 완전 분석 : 함수 기반 인덱스 추적과 활용 전략 (0) | 2025.06.16 |
[Oracle] 오라클 ALL_CONS_COLUMNS 뷰 완벽 이해 : 제약조건 컬럼 추적하기 (0) | 2025.06.16 |
[Oracle] 오라클 ALL_COL_COMMENTS 뷰 활용법 : 컬럼 설명 관리의 핵심 (0) | 2025.06.16 |
[Oracle] 오라클 ALL_TAB_PRIVS 뷰 완벽 가이드 : 테이블 권한 조회 및 실무 활용법 (0) | 2025.06.15 |