analyze使用

要对数据库对象生成统计信息,可以有以下方法:

完全统计法:analyze table table_name compute statistics;
抽样估计法:analyze table table_name estimate statistics sample 30 percent;

 对表使用抽样估计法要比完全统计法的生成统计速度要快,但是统计数据可能不够精确。在开发过程中,我们可能要涉及很多的表的查询,而我们在使用CBO的时候就需要经常对这些表执行分析统计,得到CBO所需要的统计数据。

 

下面对analyze进行使用分析
analyze table t1 compute statistics for table;
analyze table t2 compute statistics for all columns;
analyze table t3 compute statistics for all indexed columns;
analyze table t4 compute statistics;


--现在再来查看表和索引的统计信息
select table_name,num_rows,blocks,empty_blocks,initial_extent from user_tables where table_name in ('T1','T2','T3','T4');
-索引的统计信息
select table_name,index_name,blevel,leaf_blocks,distinct_keys,
        avg_leaf_blocks_per_key avg_leaf_blocks,avg_data_blocks_per_key avg_data_blocks,clustering_factor,num_rows
from user_indexes where table_name in ('T1','T2','T3','T4');


小贴士:
1、使用analyze时不一定是最好的方法,有可能影响CBO,所以在生产库不要顺便使用,应在测试库使用analyze后再分析生产库
2、效率低的sql语句,还可以在前面加上select /*+ rule */用RBO的优化方式测试,当然最好使用CBO,这时可在CBO的基础上指定Hints
3、如果使用analyze分析错误,恢复到分析前的状态,请使用
analyze table table_name delete statistics
dbms_stats.delete_table_stats(owner_name,table_name);

rbo和cbo只是oracle寻找最佳执行计划的不同方式而已.
rbo 根据一定的规则来选择他认为最快的执行计划,
cbo 根据系统提供的统计信息, 表的记录数据,表的分布情况,索引的键值多少和分布情况,字段的唯一性和分布情况,再加上一些系统的参数,使用一套算法来计算各种执行路径的成本.选择他认为成本最低的路径.(10g建议cbo,最好使用cbo)
choose 提示的应用
只要查询的表中有一个表有统计数据,系统就会使用cbo否则使用rbo

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值