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
引用URL
http://cgi.blog.roodo.com/trackback/3548413
回應文章 

我也遇過類似的問題
但因為系統參數CURSOR_SHARING設定為FORCE
導致兩種語法共用PLAN
還是有一類會變慢
唉
謝謝你的分享
加油
Posted by Willy
at 2008年10月1日 21:43