1
我需要運行一個查詢,我需要在where子句中添加日期範圍。它不應該硬編碼,因此我使用它如下。但是它比硬編碼版本花費的時間更長。內部日期查詢效率低下
tbl1.date >= (SELECT
trunc((ADD_MONTHS(SYSDATE, -1)), 'MM')
from dual) and tbl1.date <= (SELECT
last_day((ADD_MONTHS(SYSDATE, -1)))
from dual)
與硬編碼日期的相同查詢需要很短的時間
tbl1.date >= '16/05/01' and tbl1.date <= '16/05/31'
所以,我怎麼能優化其不硬編碼的查詢?
你爲什麼使用子查詢來獲取這些值?你的日期欄還包括不是午夜的時間嗎? –
Alex是對的。 ((ADD_MONTHS(SYSDATE,-1)),'MM')和last_day((ADD_MONTHS(SYSDATE,-1))' –
'之間的tbl1.date可以被重寫,它解決了我的問題,謝謝你的幫助。 – user1474111