日期:2014-05-16 浏览次数:20401 次
analyze和dbms_stats函数都是收集一些统计信息,如下:
select table_name, num_rows, blocks, avg_row_len from user_tables where table_name = 'T';
?
analyze table t compute statistics;
?
删除统计信息 analyze table t delete statistics;
?
用dbms_stats函数如下:
SQL> exec dbms_stats.gather_table_stats(user,'T');
?
得到的结果和analyze相同。
?
一般对于常规的使用(不考虑分区表,外部表等特性),使用Analyze可以帮助我们得到我们需要的数据。细微的区别如下:
一、对于分区表,建议使用DBMS_STATS,而不是使用Analyze语句
二、DBMS_STATS的缺点
三、对于oracle 9版本后面的External Table,Analyze不能使用,只能使用DBMS_STATS来收集信息。
?
?