Oracle 表連線 篩選欄位執行計劃不正確

std1984發表於2013-12-03
問題: 表SUMM_ADV_CONSUME是分割槽表,發出一個查詢如下
select count(*) from  dates T434858, SUMM_ADV_CONSUME T434932 where  T434858.DATE_ID = T434932.DATE_ID and T434858.DATE_NAME = '20131202'

產生的執行計劃掃描很多分割槽表,正常情況是一個分割槽表。使用同樣的邏輯查詢,用另個篩選條件date_name2

select count(*) from  dates T434858, SUMM_ADV_CONSUME T434932 where  T434858.DATE_ID = T434932.DATE_ID and T434858.DATE_NAME2 = to_date('20131105', 'yyyymmdd') 
只掃描一個分割槽表,執行計劃正確。 分析兩個欄位發現date_name2上有建唯一索引。 對date_name建立唯一索引也能得出正確的執行計劃。

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

相關文章