在PostgreSQL中使用索引进行数学运算

时间:2016-06-13 16:49:38

标签: postgresql

我在PostgreSQL 9.4中有一个带有checked_at时间戳字段和check_interval整数字段的表。

我只需要返回行WHERE checked_at > NOW() - INTERVAL check_interval || ' minutes'

使用多列索引会提高此查询的速度吗?还是有其他方法来优化它?

该表仍处于设计阶段,但最终预计将搜索约5-10万条记录。

1 个答案:

答案 0 :(得分:2)

多列索引对您没有帮助,但表达式的索引会有所帮助。如果您将查询更改为:

SELECT * 
FROM tbl
WHERE (checked_at + (check_interval * (INTERVAL '1 minute'))) < NOW();

您可以使用索引

CREATE INDEX jbk_tbl_checkedat_checkinterval_ex ON tbl((checked_at + (check_interval * (INTERVAL '1 minute'))))