ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 对表、索引的分析

对表、索引的分析

原创 Linux操作系统 作者:BEANBLACK 时间:2011-02-09 11:53:36 0 删除 编辑

http://space.itpub.net/17253074/viewspace-600240

分析表的方式


1、语句方式:analyze table  compute statistics for table||for all columns||for all indexed columns;

--查看表的统计信息(我们在analyze table命令中指定了for table或者不指定任何参数的时候,oracle数据库才会给我们统计基于表的统计信息)
analyze table  compute statistics for table

--查看字段的统计信息(在指定for all columns 和不指定任何参数的时候oracle会给所有字段做统计信息,在指定for indexed columns时,oracle只给有索引的字段进行字段信息统计,如果我们别有必要给所有字段统计信息时,这个属性就很有用了)
analyze table  compute statistics for all columns

--查看索引的统计信息
analyze table  compute statistics for all indexed columns;

综上:如果在运行analyze table是我们不指定参数,oracle将收集对于特定表的所有统计信息(表,索引,表字段的统计信息)


2、程序包的方式:8i之后新增了dbms程序包,使得统计数据的生成和处理更加的方便。

--创建统计信息历史保留表
sql> exec dbms_stats.create_stat_table(ownname => 'scott',stattab => 'stat_table') ;

pl/sql procedure successfully completed

--导出整个scheme的统计信息
sql> exec dbms_stats.export_schema_stats(ownname => 'scott',stattab => 'stat_table') ;

pl/sql procedure successfully completed

--分析scheme
Exec dbms_stats.gather_schema_stats(
ownname => 'test',
options => 'GATHER AUTO',
estimate_percent => dbms_stats.auto_sample_size,
method_opt => 'for all indexed columns ',
degree => 6 )

--分析表
sql> exec dbms_stats.gather_table_stats(ownname => 'TEST',tabname => 'sm_user',estimate_percent => 10,method_opt=> 'for all indexed columns') ;

pl/sql procedure successfully completed

--分析索引
SQL> exec dbms_stats.gather_index_stats(ownname => 'TEST',indname => 'pk_user_index',estimate_percent => '10',degree => '4') ;

pl/sql procedure successfully completed

--如果发现执行计划走错,删除表的统计信息
SQL>dbms_stats.delete_table_stats(ownname => 'TEST',tabname => 'SM_USER') ;

pl/sql procedure successfully completed

--导入表的历史统计信息
sql> exec dbms_stats.import_table_stats(ownname => 'TEST',tabname => 'SM_USER',stattab => 'stat_table') ;

pl/sql procedure successfully completed

--如果进行分析后,大部分表的执行计划都走错,需要导回整个scheme的统计信息
sql> exec dbms_stats.import_schema_stats(ownname => 'TEST',stattab => 'SM_USER');

pl/sql procedure successfully completed

--导入索引的统计信息
SQL> exec dbms_stats.import_index_stats(ownname => 'TEST',indname => 'PK_USER_INDEX',stattab => 'stat_table')

http://junfengwang060905.blog.163.com/blog/static/94223330201028114440776/

三、操作对象的统计数据

 

1、查看统计信息

 

    DBA|ALL|USER_INDEXES

    DBA|ALL|USER_TABLES

    DBA|ALL|USER_TAB_COLUMNS

 

    注意:这些表中的上面所列统计信息,如果不ANALYZE的话,是一直不变的。

 

2、删除统计信息

 

    ANALYZE TABLE emp DELETE STATISTICS;

 

    删除后可以防止table再使用CBO

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12878495/viewspace-686895/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 磁带库的认识
下一篇: aix parameter
请登录后发表评论 登录
全部评论

注册时间:2008-06-16

  • 博文量
    67
  • 访问量
    143936