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

标签 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 正在)使用它的原因

最佳答案

您需要一个function based index :

CREATE INDEX my_table_epoch_idx ON my_table (extract(EPOCH FROM created_at));

关于postgresql - 如何在postgresql中的extract()上添加索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47482202/

相关文章:

sql - 将两个单独的 SQL 查询的结果与 'OR' 合并

ruby-on-rails - 如何在 Rails 迁移中设置排序规则

postgresql - Postgres 序列的 last_value 字段没有按预期工作

regex - 检查变量是否包含 PostgreSQL 函数中的 x

postgresql - 如何并发创建Gin索引? POSTGRES 和 Rails 4.2

sql - Postgresql 分组月明智与缺失值

postgresql - 光标大小(结果数)

python - ElasticBeanstalk Django : Please supply ENGINE value

sql - 有没有办法减少我的 SQL 查询的大小?

postgresql - Postgres 使用 ODBC 驱动程序链接到 Big Query