Oracle之查詢對應索引的情況

2021-08-09 22:27:51 字數 2678 閱讀 9539

set linesize 666

set pagesize 5000

column index_name format a30

column table_name format a26

column num_rows format 999999999

column index_type format a24

column num_rows format 999999999

column status format a8

column clustering_factor format 999999999

column degree format a10

column blevel format 9

column distinct_keys format 9999999999

column leaf_blocks format   9999999

column last_analyzed    format a10

column column_name format a25

column column_position format 9

column temporary format a2

column partitioned format a5

column partitioning_type format a7

column partition_count format 999

--.檢視索引情況

--1. 每張表對應有多少個索引,物理多大

select t2.table_name,t1.segment_name,sum(t1.bytes)/1024/1024

from user_segments t1,user_indexes t2

where t1.segment_name=t2.index_name

and t1.segment_type like '%index%'

and t2.table_name in ('t1',

't2') 

group by t2.table_name,t1.segment_name

order by table_name;

--2. 結構情況(索引型別、高度、重複度、並行度、葉子高度、聚合因子、記錄數、狀態、最近分析時間。。。)

/*通過index_type可以方便的得知索引型別,普通索引(normal)?位圖索引(bitmap)?函式索引(function-based normal)?反向鍵索引normal/rev?

通過status欄位可知是否是分割槽索引(n/a)

通過status欄位可知普通索引是否失效(valid/unusable)

通過degree欄位可得是否有被設定為並行度的屬性(值大於1)

通過觀察last_analyzed字段值可知是否有正常收集,看有無值,或者是看時間是否很久以前的。

*/select t.table_name,

t.index_name,

t.num_rows,

t.index_type,

t.status,

t.clustering_factor,

t.blevel,

t.distinct_keys,

t.leaf_blocks,

t.uniqueness,

t.degree,

t.last_analyzed

from user_indexes t

where table_name in ('t1','t2');

--3. 檢視索引列資訊(在表的哪一列有索引,或者是在哪幾個列有聯合索引,普通表和分割槽表都一樣)

select  t.table_name,t.index_name, t.column_name, t.column_position, t.descend

from user_ind_columns t

where table_name in ('t1',

't2')  

order by table_name,index_name, column_position;       

--4. 分割槽索引總的資訊(不會展示各分割槽上的各分割槽索引資訊,總的描述了分割槽索引的型別及分割槽總數)

select  table_name,index_name, partitioning_type, partition_count 

from user_part_indexes

where table_name in ('t1',

't2') 

order by table_name,index_name;

----分割槽索引詳細資訊(每個分割槽的索引都展示,詳細說明了各分割槽索引的狀態、表空間位置、收集狀態情況....)

select index_name,

partition_name,

status,

num_rows,

blevel,

leaf_blocks,

last_analyzed,

tablespace_name

from user_ind_partitions

where index_name in

(select index_name

from user_indexes

where table_name in ('t1', 't2'));

Oracle建立索引 查詢索引

1 建立索引 create index 索引名 on 表名 列名 2 刪除索引 drop index 索引名 3 建立組合索引 create index 索引名 on 表名 列名1,列名2 檢視目標表中已新增的索引 在資料庫中查詢表名 select fromuser tableswheretable...

Oracle建立索引 查詢索引

第一種命令建立 1 建立索引 create index 索引名 on 表名 列名 2 刪除索引 drop index 索引名 3 建立組合索引 create index 索引名 on 表名 列名1,列名2 4.檢視目標表中已新增的索引 在資料庫中查詢表名 select from user table...

oracle 索引 之B TREE 索引

索引是oracle裡面的乙個非常重要的知識,oracle10g中索引可以分為以下 b tree indexes b tree cluster indexes hash cluster indexes reverse key indexes bitmap indexes bitmap join ind...