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

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

 2007-05-12 12:25:31 来源:WEB开发网   
核心提示: (1)查看索引段中extent的数量:select segment_name, count(*)from dba_extentswhere segment_type='INDEX'and owner=UPPER('&owner')group by segme

(1)查看索引段中extent的数量:  select segment_name, count(*)
  from dba_extents
  where segment_type='INDEX'
  and owner=UPPER('&owner')
  group by segment_name
  /

(2)查看表空间内的索引的扩展情况:  select
  substr(segment_name,1,20) "SEGMENT NAME",
  bytes,
  count(bytes)
  from dba_extents
  where segment_name in
  ( select index_name
  from dba_indexes
  where tablespace_name=UPPER('&表空间'))
  group by segment_name,bytes
  order by segment_name
  /

三. 索引的选择性

索引的选择性是指索引列中不同值的数目与表中记录数的比。如果一个表中有2000条记录,表索引列有1980个不同的值,那么这个索引的选择性就是1980/2000=0.99。

一个索引的选择性越接近于1,这个索引的效率就越高。

如果是使用基于cost的最优化,优化器不应该使用选择性不好的索引。如果是使用基于rule的最优化,优化器在确定执行路径时不会考虑索引的选择性(除非是唯一性索引),并且不得不手工优化查询以避免使用非选择性的索引。

确定索引的选择性,可以有两种方法:手工测量和自动测量。

(1)手工测量索引的选择性

如果要根据一个表的两列创建两列并置索引,可以用以下方法测量索引的选择性:

列的选择性=不同值的数目/行的总数 /* 越接近1越好 */  select count(distinct 第一列||'%'||第二列)/count(*)
  from 表名
  /

上一页  1 2 3 4 5  下一页

Tags:关于 Oracle 数据库

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