Oracle中分析表的作用

1.分析更新表的统计信息,,有可能导致执行计划改变..

 

2.以的analyze table abc compute statistics;这条为例,生成的统计信息会存在于user_tables这个视图,查看一下select * from user_tables where table_name='ABC';
观察一下NUM_ROWS,BLOCKS,AVG_SPACE,AVG_ROW_LEN几列你就会明白,这就是变化。分析完表之后,会发现DBA_tables 视图中,以前很多列值是空的,现在开始有数据了。这些数据就是分析表得到的.

 

3.怎么样分析表或索引
命令行方式可以采用analyze命令
如Analyze table tablename compute statistics;
Analyze index|cluster indexname estimate statistics;
ANALYZE TABLE tablename COMPUTE STATISTICS
FOR TABLE
FOR ALL [LOCAL] INDEXES
FOR ALL [INDEXED] COLUMNS;
ANALYZE TABLE tablename DELETE STATISTICS
ANALYZE TABLE tablename VALIDATE REF UPDATE
ANALYZE TABLE tablename VALIDATE STRUCTURE
[CASCADE]|[INTO TableName]
ANALYZE TABLE tablename LIST CHAINED ROWS [INTO TableName]
等等。

 

如果想分析整个用户或数据库,还可以采用工具包,可以并行分析
Dbms_utility(8i以前的工具包)
Dbms_stats(8i以后提供的工具包)

dbms_stats.gather_schema_stats(User,estimate_percent=>100,cascade=> TRUE);
dbms_stats.gather_table_stats(User,TableName,degree => 4,cascade => true);

 

这是对命令与工具包的一些总结
  (1)、对于分区表,建议使用DBMS_STATS,而不是使用Analyze语句。 
         a) 可以并行进行,对多个用户,多个Table 
         b) 可以得到整个分区表的数据和单个分区的数据。
         c) 可以在不同级别上Compute Statistics:单个分区,子分区,全表,所有分区
         d) 可以倒出统计信息
         e) 可以用户自动收集统计信息
  (2)、DBMS_STATS的缺点
        a) 不能Validate Structure
        b) 不能收集CHAINED ROWS, 不能收集CLUSTER TABLE的信息,这两个仍旧需要使用Analyze语句。
        c) DBMS_STATS 默认不对索引进行Analyze,因为默认Cascade是False,需要手工指定为True
  (3)、对于oracle 9里面的External Table,Analyze不能使用,只能使用DBMS_STATS来收集信息.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值