我正在运行一个查询,该查询返回某个日期范围之间几个月的日期对象集合。查询工作正常,但非常慢(在我的本地机器上约 2 秒,在我们的公司开发环境中约 30 秒)。这里是:
SELECT ADD_MONTHS(TO_DATE('200804', 'YYYYMM'), -1+rownum) AS MONTH
FROM all_objects
WHERE ADD_MONTHS(TO_DATE('200804', 'YYYYMM'), -1+rownum) <= TO_DATE('200805', 'YYYYMM')
目前,它只会返回一个月,但如果你扩展第二个日期字符串,它会返回更多。
我有两个问题。首先,为什么运行这么慢?我知道 Oracle 函数确实会减慢查询速度,但这在我工作的开发机器上大约需要 30 秒。
第二个也是更令人费解的问题:为什么当您将范围扩展到“201805”时,运行时间会缩短到几分之一秒?我认为更大的范围需要更长的时间。这似乎是相反的效果。