使用直方圖注意事項

pxbibm發表於2015-02-25
1.直方圖是專門為了準確評估分佈不均勻的目標列的可選擇率、結果集的cardinality而被oracle引入的。
所以,如果目標列的資料是均勻分佈的,比如主鍵列,有唯一索引的列,則根本就不需要對這些列收集直方圖
統計資訊。如果對這些均勻分佈的列收集了直方圖統計資訊,由於直方圖能夠直接影響CBO估算可選擇率,因此
會影響CBO對成本的計算和對執行計劃的選擇,在這種情況下就可能會使CBO選錯執行計劃,影響SQL的執行效率。
2.對於從來沒有在SQL語句的where條件中出現的列,不管其資料分佈是否均勻,都無須收集直方圖統計資訊。如果
目標列從未在SQL語句的where條件中出現過,則意味著這個列的直方圖統計資訊不會對CBO計算成本,執行計劃產生
任何影響。oracle預設的自動收集直方圖統計資訊的策略就是採用了這個原則,如果目標列從未在SQL語句的where
條件中出現過,則sys.col_usage$中就不會有這個列的使用記錄(在SQL語句的where條件中使用過的列的資訊會記錄
到sys.col_usage$表中)。那麼oracle在預設方式自動收集直方圖統計資訊時就不會收集這個列的直方圖統計資訊。
3.直方圖統計資訊可能會影響shared cursor的共享,如果影響了SQL的shared cursor的共享,可以採取刪除
目標列上直方圖統計資訊。
4.在配置oracle 10g引入的自動統計資訊收集作業時,需要特別注意對直方圖統計資訊的收集策略。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12798004/viewspace-1441174/,如需轉載,請註明出處,否則將追究法律責任。

相關文章