是否可以在jsonb postgresql中创建时间戳索引?

时间:2016-05-19 14:43:41

标签: postgresql

是否可以在jsonb列上创建有效的索引,以便在postgresql中为时间戳值?

我尝试了这个建议Create timestamp index from JSON on PostgreSQL但是ORDER和SIMPLE WHERE操作仍在使用没有索引的seq扫描。

使用索引查询执行时间而没有索引没有区别:

SELECT * FROM bums.mytable_no_ind ORDER BY (ts->>'date')::TIMESTAMP DESC

EXPLAIN ANALYZE SELECT * FROM bums.mytable_no_ind WHERE (ts->>'date')::TIMESTAMP = NOW()

有关表格的信息:

    create table bums.mytable_no_ind (
    s serial primary key,
    ts jsonb,
    x int,
    y int,
    z int
);
insert into bums.mytable_no_ind (ts, x, y, z) 
select 
    ('{"date": "' || clock_timestamp() || '"}')::jsonb,
    500 * RANDOM(),
    500 * RANDOM(),
    500 * RANDOM()
from generate_series(1, 1000000)
;

0 个答案:

没有答案