티스토리 뷰

반응형
SQL 작성시나 튜닝시 테이블에 인덱스는 중요한 팩터입니다.
토드나 오렌지와 같은 GUI툴은 사용하면 손쉽게 테이블 마다 생성된 인덱스를 볼 수
있는데 툴이 없을때 막상 특정 테이블의 인덱스를 찾을려면 귀찮을때가 많죠.
저두 매번 찾기가 귀찮아 이번에 인덱스 구성을 조회하는 SQL를 만들어 보았습니다.
하나의 인덱스에 컬럼을 7개 조합해서 만드는 경우는 많이 없음으로 최대 7개로 구성된
인덱스만 표현하도록 했습니다.

----------- SQL BEGIN -------------------------------------------------
select  index_name
    ,index_type
    ,decode(constraint_name, null, ' ', 'pk') primary_key
    ,uniqueness
    ,nvl(max(a),' ') index_pos1
    ,nvl(max(b),' ') index_pos2
    ,nvl(max(c),' ') index_pos3
    ,nvl(max(d),' ') index_pos4
    ,nvl(max(e),' ') index_pos5
    ,nvl(max(f),' ') index_pos6   
    ,nvl(max(g),' ') index_pos7       
from
(
select  a.index_name
    ,a.index_type
       ,a.uniqueness
       ,c.constraint_name
       ,DECODE(column_position, 1, column_name, '') a
       ,DECODE(column_position, 2, column_name, '') b
       ,DECODE(column_position, 3, column_name, '') c
       ,DECODE(column_position, 4, column_name, '') d
       ,DECODE(column_position, 5, column_name, '') e         
       ,DECODE(column_position, 6, column_name, '') f
       ,DECODE(column_position, 7, column_name, '') g      
from all_indexes a, all_ind_columns b, all_constraints c
where a.table_name = upper(:v_table_name)
and a.table_name = b.table_name
and a.index_name = b.index_name
and a.table_name = c.table_name(+)
and a.index_name = c.constraint_name(+)
and c.constraint_type(+) = 'P'
order by index_name, column_position
)
group by index_name, index_type,constraint_name, uniqueness
order by primary_key desc, index_name
----------- SQL END -------------------------------------------------
반응형