[오라클] 인덱스 조회 방법 (Index)
- 데이터베이스/오라클
- 2019. 1. 17.
오라클(Oracle) 인덱스 조회 쿼리
오라클 쿼리를 작성하기 전에 필수적으로 인덱스(Index)를 확인해야 한다. 인덱스를 무시하고 쿼리를 작성하면 심각한 성능 이슈가 발생 할 수 있다. 인덱스는 오라클 시스템뷰의 하나인 ALL_IND_COLUMNS 뷰를 사용하여 쉽게 조회가 가능하다.
SELECT a.table_name
, a.index_name
, a.column_name
FROM all_ind_columns a
WHERE a.table_name = 'EMP'
ORDER BY a.index_name
, a.column_position
[컬럼 코멘트를 포함하여 조회]
SELECT a.table_name
, a.index_name
, a.column_name
, b.comments
FROM all_ind_columns a
, all_col_comments b
WHERE a.table_name = 'EMP'
AND a.table_owner = b.owner
AND a.table_name = b.table_name
AND a.column_name = b.column_name
ORDER BY a.index_name
, a.column_position
사용자에 따라서 사용할 수 있는 뷰가 달라진다. 위에 쿼리가 조회되지 않는다면 뷰를 바꿔서 조회하면 된다.
(XXX_IND_COLUMNS, XXX_COL_COMMENTS)
ALL_IND_COLUMNS | 현재 사용자가 엑세스할 수 있는 테이블에 대한 인덱스 정의 |
USER_IND_COLUMNS | 현재 사용자의 스키마에 있는 테이블에 대한 인덱스 정의 |
DBA_IND_COLUMNS | 데이터베이스의 모든 인덱스 정의 |
SELECT a.table_name
, a.index_name
, a.column_name
, b.comments
FROM user_ind_columns a
, user_col_comments b
WHERE a.table_name = 'EMP'
AND a.table_owner = b.owner
AND a.table_name = b.table_name
AND a.column_name = b.column_name
ORDER BY a.index_name
, a.column_position
;
SELECT a.table_name
, a.index_name
, a.column_name
, b.comments
FROM dba_ind_columns a
, dba_col_comments b
WHERE a.table_name = 'EMP'
AND a.table_owner = b.owner
AND a.table_name = b.table_name
AND a.column_name = b.column_name
ORDER BY a.index_name
, a.column_position
;