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

Oracle数据库中索引的维护

 2006-08-05 11:58:25 来源: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 6  下一页

Tags:Oracle 数据库 索引

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