Col 1,
col 2,
.....
.....
from
table1,
table2
........
........
where
join conditions1
join conditions1
................
.................
and
table1.day_key >= (select key from date_dim where value='01-JAN-2011')
and table1.day_key <= (select key from date_dim where value='31-DEC-2011')
and
table2.day_key >= (select key from date_dim where value='01-JAN-2011')
and table2.day_key <= (select key from date_dim where value='31-DEC-2011')
在這裏我可以看到date_dim表正在做掃描四在哪裏條件,如何避免它。在from子句中未選擇date_dim表。我沒有環境去測試這個不幸的事情。數據庫是Oracle 10g中避免不必要的表掃描
有趣的問題,雖然我沒有看到任何性能問題掃描該維度表兩次。 –
它的4倍我猜... –
是的,兼作必要的。我爲你的問題寫了一個解決方案的答案。該表將被掃描每個值只有一次,但你會在需要控制的執行計劃。 –