oracle 修改聚簇因子,聚簇因子-Focus on Oracle-51CTO博客

1、聚簇因子(clustering_factor):是使用B树索引进行区间扫描的成本很重要因素,反映数据在表中分布的随机程度

1360038524_4388.png

2、聚簇因子的计算方法:①扫描索引②比较某行的ROWID和前一行的ROWID,如果这两个ROWID不属于同一个数据块,那么聚簇因子增加1③整个索引扫描完毕后,就得到了该索引的集群因子

--对选择最优查询路径影响最大的只有列的选择率和聚簇因子

3、实验测试

create table t1 as

select trunc((rownum-1)/100) id,

rpad(rownum,100) t_pad

from dba_source

where rownum <= 10000;

create index t1_idx1 on t1(id);

exec dbms_stats.gather_table_stats(user,'t1',method_opt=>'FOR ALL COLUMNS SIZE 1',cascade=>TRUE);

create table t2 as

select mod(rownum,100) id,

rpad(rownum,100) t_pad

from dba_source

where rownum <= 10000;

create index t2_idx1 on t2(id);

exec dbms_stats.gather_table_stats(user,'t2',method_opt=>'FOR ALL COLUMNS SIZE 1',cascade=>TRUE);

select count(*) ct from t1 where id = 1 ;

select count(*) ct from t2 where id = 1 ;

--索引的聚簇因子

select t.table_name||'.'||i.index_name idx_name,

i.clustering_factor, t.blocks, t.num_rows

from user_indexes i, user_tables t

where i.table_name = t.table_name

and t.table_name in ('T1','T2')

order by t.table_name, i.index_name;

--计算索引的聚簇因子

select t.table_name||'.'||i.index_name idx_name,

i.clustering_factor, t.blocks, t.num_rows

from all_indexes i, all_tables t

where i.table_name = t.table_name

and t.table_name = 'EMPLOYEES'

and t.owner = 'HR'

and i.index_name = 'EMP_DEPARTMENT_IX'

order by t.table_name, i.index_name;

select department_id, last_name, blk_no,

lag (blk_no,1,blk_no) over (order by department_id) prev_blk_no,

case when blk_no != lag (blk_no,1,blk_no) over (order by department_id)

or rownum = 1

then '*** +1'

else null

end cluf_ct

from (

select department_id, last_name,

dbms_rowid.rowid_block_number(rowid) blk_no

from hr.employees

where department_id is not null

order by department_id

);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值