不能取代的analyze

 


话说对表分析有两种方式,一种是用analyze,另外一种是用dbms_stat,目前来看大多数情况都使用后者,主要原因是可以使用并行。
但是昨天我在对表查看是否高水位的时候(我腻断肯定高水位),使用dbms_stat不能查看表是否高水位,最后还得看analyze。

使用dbms_stat搜集统计信息之后
SQL> SELECT TABLE_NAME,NUM_ROWS,BLOCKS,EMPTY_BLOCKS FROM USER_TABLES WHERE TABLE_NAME='RPT_KPI_SR_QD';
 
TABLE_NAME             NUM_ROWS     BLOCKS EMPTY_BLOCKS
---------------------- ---------- ---------- ------------
RPT_KPI_SR_QD           6990836     813917         0
不能查看到空块的存在。
使用analyze分析表
SQL> analyze table rpt_kpi_sr_qd compute statistics;
 
Table analyzed
SQL> SELECT TABLE_NAME,NUM_ROWS,BLOCKS,EMPTY_BLOCKS FROM USER_TABLES WHERE TABLE_NAME='RPT_KPI_SR_QD';
 
TABLE_NAME             NUM_ROWS     BLOCKS EMPTY_BLOCKS
---------------------- ---------- ---------- ------------
RPT_KPI_SR_QD           6990836     813917         1443
查看到空块之后,收缩表高水位。
 
SQL> SELECT TABLE_NAME,NUM_ROWS,BLOCKS,EMPTY_BLOCKS FROM USER_TABLES WHERE TABLE_NAME='RPT_KPI_SR_QD';
 
TABLE_NAME                       NUM_ROWS     BLOCKS EMPTY_BLOCKS
------------------------------ ---------- ---------- ------------
RPT_KPI_SR_QD                     6978205      60543         1443

大幅度的降低了表的块

远程访问表数据量大,返回的结果集少的情况下,在本地使用视图,最后远程调用视图会起到不错的效果

你可能感兴趣的:(ORACLE,管理)