与单一条件相比,为什么between
运算符需要很长时间才能执行。
select a,b from table where trunc(a) between '2000-04-01' and '2016-03-31'
select a,b from table where trunc(a)>='2000-04-01'
第一个执行与第二个执行相比需要很长时间,即使有相同的记录也没有。
答案 0 :(得分:0)
我不确定为什么第一次需要更长的时间。如果您只运行一次查询,那么可能是因为冷缓存与暖缓存。
但是,我认为最好不使用between
来编写查询:
where a >= '2000-04-01' and a < '2016-04-02'
这样做有两个原因。首先,查询可以利用索引(尽管这可能并不重要,因为日期范围太宽)。此外,无论a
是否具有时间组件,这都有效。