怎样查询索引的深度?

[复制链接]
查看11 | 回复8 | 2006-3-20 16:25:54 | 显示全部楼层 |阅读模式
如题
回复

使用道具 举报

千问 | 2006-3-20 16:25:54 | 显示全部楼层
分析索引
回复

使用道具 举报

千问 | 2006-3-20 16:25:54 | 显示全部楼层
analyze index .. validate structure;
select height from index_stats;
回复

使用道具 举报

千问 | 2006-3-20 16:25:54 | 显示全部楼层
假如索引深度为3,是不是我查找一条数据需要三次的读取呢?根据这样是否可以算出一个表到底是使用索引读取次数多还是全表扫描读取次数多呢?
回复

使用道具 举报

千问 | 2006-3-20 16:25:54 | 显示全部楼层
----假如索引深度为3,是不是我查找一条数据需要三次的读取呢?
最多读取三次
--根据这样是否可以算出一个表到底是使用索引读取次数多还是全表扫描读取次数多呢?、
不好算吧,一般如果读取的记录数占表的纪录数40%以上就不使用
索引而直接使用全表扫描可能性能更好
回复

使用道具 举报

千问 | 2006-3-20 16:25:54 | 显示全部楼层
最初由 xiangqy 发布
[B]--一般如果读取的记录数占表的纪录数40%以上就不使用
索引而直接使用全表扫描可能性能更好 [/B]

这个要看数据分布,如果分布很零散,5%以上都认为不佳。
如果比较集中,比如查询按日期查询出库数据,10%以下,使用索引都会很好。
回复

使用道具 举报

千问 | 2006-3-20 16:25:54 | 显示全部楼层
最初由 xiangqy 发布
[B]----假如索引深度为3,是不是我查找一条数据需要三次的读取呢?
最多读取三次
--根据这样是否可以算出一个表到底是使用索引读取次数多还是全表扫描读取次数多呢?、
不好算吧,一般如果读取的记录数占表的纪录数40%以上就不使用
索引而直接使用全表扫描可能性能更好 [/B]

是的,是否使用index 还是全表扫描好呢,主要取决于返回的数据占整个数据行的多少百分比,这个还不能进行唯一的确定,还和返会数据行在块中的分布有关系,如果分布很广的话,那么用index 扫描就不如用全表扫描了,这里不能用返回的数据行来做标准,应该用读到的数据块来做标准比较的好一点,如果是有序表的话,那么使用index range scan 扫描就很好的使用的索引扫描带来的性能了
回复

使用道具 举报

千问 | 2006-3-20 16:25:54 | 显示全部楼层
在 dba_indexes 的视图中,查看 clustering_factor 列。如果 clustering_factor 的值和表中的块数目大致一样,那么你的表和索引的顺序是一样的。不过,如果 clustering_factor 的值接近表中的行数目,那就表明表格中的行和索引的顺序是不一样的。
可以根据clustering_factor 的值来判断你的表是有顺序的还是没有顺序的
回复

使用道具 举报

千问 | 2006-3-20 16:25:54 | 显示全部楼层
rchsh说得在理
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行