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