我很好奇什么是包含比较语句的oracle SQL查询的最佳/有效语法:
WHERE time_stamp + INTERVAL '+1' HOUR
BETWEEN to_date('13-08-2016 17:02', 'dd-mm-yyyy hh24:mi:ss')
AND to_date('21-11-2016 16:02', 'dd-mm-yyyy hh24:mi:ss')
或
WHERE time_stamp
BETWEEN to_date('13-08-2016 17:02', 'dd-mm-yyyy hh24:mi:ss') - INTERVAL '+1' HOUR
AND to_date('21-11-2016 16:02', 'dd-mm-yyyy hh24:mi:ss') - INTERVAL '+1' HOUR
sql解析器会执行优化工作吗?
答案 0 :(得分:2)
我建议将这些写成:
WHERE time_stamp BETWEEN TIMESTAMP '2016-08-13 17:02:00' - INTERVAL '1' HOUR AND
TIMESTAMP '2016-11-21 16:02:00' - INTERVAL '1' HOUR
使用DATE
和TIMESTAMP
用于ISO格式的常量只会使代码更清晰(在我看来)。
此外,在“常量”上使用日期算术可以使优化器更容易使用索引(如果有合适的索引)。
答案 1 :(得分:0)
取决于您是否在该time_stamp列上有索引。 如果您有索引,最好不要在该列上执行任何表达式或函数。 因此,如果列具有索引,则第二个查询将执行得更好。