2007年06月28日

使用histograms的時機

今日實際遇到要使用histograms的機會了

情況是,有一個table,資料量大約5百多萬筆,但總分類只有2種,但其中一類佔的比列不到10%,但因為oracle 9i不論找尋那一類都是走index(full scan),這會導致查尋其中一類的資料的效能變差


這時可利用oracle提供的一些工具增加oracle的判斷資訊

可使用
begin
dbms_stats.gather_table_stats(ownname => 'SYSTEM',
tabname => 'TEST',
estimate_percent => dbms_stats.AUTO_SAMPLE_SIZE, --我是讓oracle自已去判斷選多少
degree => 50, -- 最高到100,愈高,取樣愈準,但也花愈多時間
cascade => TRUE,
METHOD_OPT => 'FOR ALL INDEXED COLUMNS SIZE 100'); --最高到254,愈高,取樣愈準,但也花愈多時間
 end;


然後再次查執行計劃,就應該有看到較少資料所走的index變成INDEX RANGE SCAN NON-UNIQUE


Posted by my_work at 樂多Roodo! │21:21 │回應(1)引用(0)DB
樂多分類:網路/3C 共同主題:Oracle 工具:編輯本文
Ads by Roodo! 

引用URL

http://cgi.blog.roodo.com/trackback/3548413
回應文章

我也遇過類似的問題
但因為系統參數CURSOR_SHARING設定為FORCE
導致兩種語法共用PLAN
還是有一類會變慢

謝謝你的分享
加油
Posted by Willy at 2008年10月1日 21:43