oracle表統計信息的使用

       最近開發處理ECIF相關的項目,使用存儲過程跑批處理數據。按期跑批數據,每次存儲過程跑批使用臨時表進行數據整理,再join這張臨時表將數據放入目標表,最後清空臨時表。
html

       問題:在join處理這步中執行較慢,有時半天不出結果集。sql

       解決方案:更新數據庫表統計信息 + 使用多進程執行數據庫

        多進程在此很少講。每次往臨時表插入數據,數據達到幾百萬條,存儲過程結束以後又清除表,這樣會讓數據庫誤覺得該臨時表數據一致爲0,因數據庫表統計信息並不是實時。更新表統計信息能良好地估計統計數據(尤爲是針對較大的分區表),並能得到更好的統計結果,最終制定出速度更快的SQL執行計劃。oracle

        就是在執行join操做處理以前,先讓數據庫更新臨時表表統計信息。spa

dbms_stats.gather_table_stats(ownname=>'你的用戶名',tabname=>'你的表名',degree=>8,cascade=>true);

 

       有關Oracle統計信息詳細詳見:收集oracle統計信息
code

相關文章
相關標籤/搜索