USER_INDEXES视图剖析

本文介绍了Oracle数据库中通过USER_INDEXES视图评估索引性能的方法,包括如何利用选择性、群集因子及二元高度等指标进行索引优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        USER_INDEXES视图为我们提供了很多有价值的信息,深入研究其中列的含义有助于帮助我们优化索引。

1、选择性

        Oracle根据查询和数据,提供了多种方法来判断使用索引的价值。第一个方法是判断索引中的唯一键或不同键的数量。使用USER_INDEXES视图,该视图中显示了distinct_keys列。比较一下唯一键的数量和表中的行数,就可以判断索引的选择性。选择性越高,索引返回的数据就越少。索引的选择性可以帮助基于代价的优化器来判断执行途径。

SQL> select index_name,table_name,num_rows,distinct_keys from user_indexes;

 

INDEX_NAME   TABLE_NA   NUM_ROWS DISTINCT_KEYS

------------ -------- ---------- -------------

PK_DEPT      DEPT              4             4

PK_EMP       EMP              14            14

EMPT_ID1     EMPT             14            14

EMPT_ID2     EMPT             14            12

BANK_ID      BANK              2              2

 已选择6行。  

 

2、群集因子

Clustering_factor列位于USER_INDEXES视图中。该列反映了数据相对于已索引的列是否显得有序。如果clustering_factor列的值接近于索引中的树叶块(leaf_block)的数目,表中的数据就越有序。如果它的值接近于表中的行数,则表中的数据就不是很有序。

 

3、二元高度(binary height

    索引的二元高度对把ROWID返回给用户进程时所要求的I/O量起到关键作用。二元高度的每个级别都会增加一个额外的读取块,而且由于这些块不能按顺序读取,它们都要求一个独立的I/O操作。

 

SQL> execute dbms_stats.gather_index_stats('SCOTT','EMPT_ID1');

 

PL/SQL 过程已成功完成。

 

SQL> select blevel,index_name from user_indexes where index_name='EMPT_ID1';

 

    BLEVEL INDEX_NAME

---------- ------------

         0 EMPT_ID1

 

注:索引在创建时就已经进行了分析。

 

二元高度主要随着表的大小以及被索引的列中值的范围的狭窄程度而变化。索引上如果有大量被删除的行,它的二元高度也会增加。更新索引列也类似于删除操作,因为它增加了已删除键的数目。重建索引可能降低二元高度。

 

技巧一:如果一个索引中被删除的行接近20~25%,重建索引会降低二元高度以及在一次I/O中所读取的空闲空间。

技巧二:通常数据库块的尺寸越大,索引的二元高度就越小。

技巧三:在BLEVEL中每增加一个级别都会增加DML操作的性能开销。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15203236/viewspace-536321/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15203236/viewspace-536321/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值