Happy3w

更新数据库统计信息

2017.08.18
创建完索引后查看执行计划,发现并没有使用索引,究其原因是没有更新统计信息。 根据网上查到的资料显示,Oracle10g及以后的版本,采用的CBO优化器,它的特点是基于数据库对表和索引的统计信息(包括表的大小、行数、每行长度等)来计算耗费,然后选在耗费最低的执行计划。因此如果数据库收集的统计信息是错误的,那么将造成错误的执行计划。 更新统计信息的sql(统计表、索引、直方图): ---------dbms方式------------------
begin
     dbms_stats.gather_table_stats(ownname=>用户名,tabname => 表名
       ,method_opt => 'for all indexed columns',estimate_percent=>100,cascade => true) ;
end;
也可以用analyze 方式,但是据我所查的资料说oracle 10以后推荐用dbms的方式。 ------------analyze方式------------------
analyze table 表名 compute statistics for table for all indexes for all indexed columns;