WEB开发网
开发学院数据库Oracle Oracle数据库中索引的维护 阅读

Oracle数据库中索引的维护

 2006-08-05 11:58:25 来源:WEB开发网   
核心提示: 手工方法的优点是在创建索引前就能评估索引的选择性,(2)自动测量索引的选择性如果分析一个表,Oracle数据库中索引的维护(3),也会自动分析所有表的索引,第一,索引碎片的程度也越高,碎片的产生使访问和使用该索引的I/O成本增加,为了确定一个表的确定性,就要分析表

手工方法的优点是在创建索引前就能评估索引的选择性。

(2)自动测量索引的选择性

如果分析一个表,也会自动分析所有表的索引。

第一,为了确定一个表的确定性,就要分析表。

analyze table 表名
compute statistics
/

第二,确定索引里不同关键字的数目:

select distinct_keys
from user_indexes
where table_name='表名'
and index_name='索引名'
/

第三,确定表中行的总数:

select num_rows
from user_tables
where table_name='表名'
/

第四,索引的选择性=索引里不同关键字的数目/表中行的总数:

select i.distinct_keys/t.num_rows
from
user_indexes i,
user_tables t
where i.table_name='表名'
and i.index_name='索引名'
and i.table_name=t.table_name
/

第五,可以查询USER_TAB_COLUMNS以了解每个列的选择性。

表中所有行在该列的不同值的数目:

select
column_name,
num_distinct
from user_tab_columns
where table_name='表名'
/

列的选择性=NUM_DISTINCT/表中所有行的总数,查询USER_TAB_COLUMNS有助测量每个列的选择性,但它并不能精确地测量列的并置组合的选择性。要想测量一组列的选择性,需要采用手工方法或者根据这组列创建一个索引并重新分析表。

四. 确定索引的实际碎片

随着数据库的使用,不可避免地对基本表进行插入,更新和删除,这样导致叶子行在索引中被删除,使该索引产生碎片。插入删除越频繁的表,索引碎片的程度也越高。碎片的产生使访问和使用该索引的I/O成本增加。碎片较高的索引必须重建以保持最佳性能。

上一页  1 2 3 4 5 6  下一页

Tags:Oracle 数据库 索引

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接