对该列进行算术运算时如何创建索引
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
。
我有一个查询从 table 中选择超过 72 天的记录。
SELECT id FROM TABLE_NAME WHERE TIMESTAMP <= SYSDATE - INTERVAL '72' HOUR;
这个查询的性能很糟糕,所以我在 TIMESTAMP 列中添加了一个索引。
这适用于 千 条记录,但当记录数为 1000 万(有时甚至更多)时,我很难查看索引的任何性能改进。
我的猜测是算术运算正在降低查询性能。
请告诉我是否有任何其他方法可以加快此查询。
假设时间戳列是TIMESTAMP
类型,问题是从DATE
(由SYSDATE
返回)到TIMESTAMP
的隐式转换杀死索引。
您可以添加一个基于函数的索引,或者您可以将 SYSDATE
的使用更改为 SYSTIMESTAMP
。