如何在该列上执行算术运算时创建索引

时间:2015-03-07 03:16:22

标签: oracle indexing

我有一个查询,从表格中选择超过72天的记录。

SELECT id FROM TABLE_NAME WHERE TIMESTAMP <= SYSDATE - INTERVAL '72' HOUR;

此查询的性能非常糟糕,因此我在TIMESTAMP列中添加了一个索引。

这适用于个记录,但当记录数 1000万(有时甚至更多)时,我几乎看不到索引的任何性能提升。

我的猜测是算术运算会破坏查询的性能。

请告诉我是否有其他方法可以加快此查询速度。

1 个答案:

答案 0 :(得分:2)

假设timestamp列属于TIMESTAMP类型,问题是从DATE(由SYSDATE返回)到TIMESTAMP的隐式转换会导致索引。

您可以添加基于函数的索引,也可以将SYSDATE的使用更改为SYSTIMESTAMP