WEB开发网
开发学院数据库Oracle 关于Oracle数据库中索引的维护经验谈 阅读

关于Oracle数据库中索引的维护经验谈

 2007-05-12 12:25:31 来源:WEB开发网   
核心提示: 如果我们知道其中一列索引的选择性(例如其中一列是主键),那么我们就可以知道另一列索引的选择性,关于Oracle数据库中索引的维护经验谈(3),手工方法的优点是在创建索引前就能评估索引的选择性,(2)自动测量索引的选择性如果分析一个表,但它并不能精确地测量列的并置组合的选择性,要想测量一组列

如果我们知道其中一列索引的选择性(例如其中一列是主键),那么我们就可以知道另一列索引的选择性。

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

(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有助测量每个列的选择性,但它并不能精确地测量列的并置组合的选择性。要想测量一组列的选择性,需要采用手工方法或者根据这组列创建一个索引并重新分析表。

上一页  1 2 3 4 5  下一页

Tags:关于 Oracle 数据库

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