如何在postgresql中的extract()上添加索引

sim*_*Pod 2 postgresql

WHERE在 postgres 数据库中使用具有以下条件的查询:

WHERE extract(EPOCH FROM created_at) BETWEEN 1511132400 AND 1511737199

如何添加索引以便具有此条件的查询使用它?创建索引created_at没有帮助,并且不使用索引。

目前,EXPLAIN这样的查询给出:

Filter: (date_part('epoch'::text, created_at) >= '1511132400'::double precision) AND (date_part('epoch'::text, created_at) <= '1511737199'::double precision)

(该extract()语句由 Grafana 生成,因此这就是我(或 Grafana 正在)使用它的原因

Mic*_*zzi 5

您需要一个基于函数的索引

CREATE INDEX my_table_epoch_idx ON my_table (extract(EPOCH FROM created_at));
Run Code Online (Sandbox Code Playgroud)