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可以