对该列进行算术运算时如何创建索引

How to create index when there is a arithmetic operation done on that column

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

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

这个查询的性能很糟糕,所以我在 TIMESTAMP 列中添加了一个索引。

这适用于 条记录,但当记录数为 1000 万(有时甚至更多)时,我很难查看索引的任何性能改进。

我的猜测是算术运算正在降低查询性能。

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

假设时间戳列是TIMESTAMP类型,问题是从DATE(由SYSDATE返回)到TIMESTAMP的隐式转换杀死索引。

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