索引構成列を確認する

Pocket

【概要】
DBA_IND_COLUMNS、DBA_INDEXES、およびDBA_TABLESを結合して、索引構成列を確認する。
【SQL文】
/*
|| ■索引構成列を確認する
||
|| 【項目の説明】
|| TABLE_OWNER :表の所有者
|| INDEX_OWNER :索引の所有者
|| TABLE_NAME :表の名前
|| INDEX_NAME :索引の名前
|| COLUMN_NAME :表の列名
|| INDEX_TYPE :索引の種類
|| UNIQUENESS :索引の一意性
|| UNIQUE ==> Y
|| NONUNIQUE ==> N
|| COLUMN_POSITION :列の定義順序
|| DESCEND :ソート方法
*/
set echo off
set lines 120
set pages 1000

clear col
ttitle off

col TABLE_OWNER for a12
col index_owner for a12
col table_name for a25
col index_name for a25
col column_name for a16
col index_type for a8
col UNIQUENESS for a5
col column_position for 999
col descend for a5

break on table_owner on index_owner on table_name on index_name nodup

ttitle left ‘■■■ 索引構成列情報 ■■■’
spool idx_col_info.lis

SELECT dt.owner TABLE_OWNER
, dic.index_owner
, dt.table_name
, dic.index_name
, dic.column_name
, dic.column_position
, di.index_type
, decode(di.uniqueness, ‘UNIQUE’, ‘Y’, ‘NONUNIQUE’, ‘N’) UNIQUENESS
, dic.descend
FROM dba_ind_columns dic
, dba_indexes di
, dba_tables dt
WHERE dic.index_owner not in
(‘SYS’,’SYSTEM’,’ORDSYS’,’CTXSYS’,’MDSYS’,’AURORA$JIS$UTILITY$’,’OUTLN’)
AND dic.index_name = di.index_name
AND dic.table_name = dt.table_name(+)
AND dt.table_name = di.table_name(+)
ORDER by TABLE_OWNER,table_name,index_name,column_position
;
spool off
clear col
ttitle off
set line 80

以上です (^^♪