1. 程式人生 > >5.2 Oracle裡收集與檢視統計資訊的方法 《基於Oracle的優化(學習筆記)》

5.2 Oracle裡收集與檢視統計資訊的方法 《基於Oracle的優化(學習筆記)》

收集統計資訊有兩種方法:一是通過analyze命令,一是通過dbms_stats包

使用analyze收集統計資訊的方法

刪除索引的統計資訊

analyze index index_name delete statistics;

以估算的模式,取樣的比例15%收集統計資訊

analyze table table_name estimate statistics sample 15 percent for table;

以計算模式收集統計資訊

analyze table table_name compute statistics for table;

對列以計算模式收集統計資訊

analyze table table_name compute statistics for columns column_name1,column_name2;

以計算模式對錶和列收集統計資訊

analyze table table_name compute statistics for table for columns column_name1,column_name2;

以計算模式收集索引的統計資訊

analyze index index_name compute statistics;

刪除表、列和索引的統計資訊

analyze table table_name delete statistics;

一次性收集表、所有列和索引的統計資訊

analyze table table_name compute statistics;

使用dbms_stats收集統計資訊的方法

dbms_stats做常用的四個儲存過程:

gather_table_stats:用於收集表、列和索引的統計資訊。

gather_index_stats:用於收集索引的統計資訊。

gather_schema_stats:用於收集指定schema下的所有物件的統計資訊。

gather_database_stats:用於全資料庫的所有物件的統計資訊。

analyze命令可以做到只收集列而不收集表的統計資訊,而dbms_stats做不到這一點。

刪除表、列和索引的統計資訊

dbms_stats.delete_table_stats(ownname='>SCOTT',tabname=>'T2')

一次性收集表、列和索引的統計資訊

dbms_stats.gather_table_stats(ownname=>'SCHEMA_NAME',tabname=>'TABLE_NAME',esmite_percent=>100,cascade=true);

analyze和dbms_stats的區別

1.analyze不能收集分割槽表的統計資訊,而dbms_stats可以

2.analyze不能並行收集統計資訊,而dbms_stats可以