Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1182675
  • 博文数量: 398
  • 博客积分: 10110
  • 博客等级: 上将
  • 技术积分: 4055
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-23 20:01
个人简介

新博客http://www.cnblogs.com/zhjh256 欢迎访问

文章分类

全部博文(398)

文章存档

2012年(1)

2011年(41)

2010年(16)

2009年(98)

2008年(142)

2007年(100)

我的朋友

分类: Oracle

2008-04-02 09:57:08

sys_op_lbid()可以用来直接得到索引页块中的信息。
重建或者coalesce索引的提示可包含如下:
1. 如果有很多块的rows_per_block很小,并且只有很少的快具有较大的rows_per_block值,那么这很可能是一个处理FIFO队列的索引,可以考虑对其进行coalesce。
2. 如果有少量的块具有特别多的行,那么索引的其他部分可能是不好的索引块拆分不好造成的,在这种情况下,重建索引可以将索引压到少量的空间中,并且不会导致之后立刻出现大量的拆分现象。如果在重建后的几个小时内,大量的块又被拆分了,那么重建是不恰当的。

rem     对于一个简单的B树索引,sys_op_lbid()的第一个参数为索引的object_id。该例子用来分析每个页块中的索引条目,索引在T1表的(v1, small_pad)上,在WHERE子句中使用NOT NULL是为了防止完全为空的索引条目出现。

column ind_id new_value m_ind_id
 
select object_id ind_id
from    user_objects
where   object_name = 'T1_I1'
;
 
break on report skip 1
compute sum of blocks on report
       
select
        rows_per_block, count(*) blocks
from (
select
        /*+
               cursor_sharing_exact
               dynamic_sampling(0)
               no_monitoring
               no_expand
               index_ffs(t1,t1_i1)
               noparallel_index(t,t1_i1)
        */
        sys_op_lbid( &m_ind_id ,'L', t1.rowid) as block_id,
        count(*)                               as rows_per_block
from
        t1
--      t1 sample block (100)
where
        v1 is not null
or      small_pad is not null
group by
        sys_op_lbid( &m_ind_id ,'L', t1.rowid)
)
group by rows_per_block
;

阅读(1457) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~