PostgreSql动态JSON索引

时间:2017-02-15 18:37:45

标签: postgresql indexing

我是PostgreSql世界的新手。我们选择了这个数据库,以便我们可以查询我们的JSON结果,包括包含,小于,大于等的过滤查询.JSON结果是动态的,我们无法事先知道将生成哪些键作为输出。表(result_id(int64),jsondata(jsonb))数据看起来像这样

id1,{k1:vab,k2:abc,k3:def}
id1,{k1:abv,k2:v7,k3:ghu}
id1,{k1:v5,k2:vdd,k3:vew}
id1,{k1:v6,k2:v9s,k3:ved}
id2,{k4:vw,k5:vds,k6:vdss}
id2,{k4:v1,k5:fgg,k6:dd}
id2,{k4:qw,k5:gfd,k6:ess}
id2,{k4:er,k5:dfs,k6:fss}

我的查询类似于

Select * from table where result_id = 'id1' and jsondata->'k1' contains 'ab'

我的脚本输出我存储在此表中的json内容。 每个json键在Grid列中表示,json键的值是列data.Grid提供过滤功能,这意味着对JSON数据进行过滤。 我的问题是过滤可能发生在任何JSON密钥上,但密钥名称不是静态的。当脚本内容发生更改时,键(json输出)可能会发生变化。因此,先前索引的键将变得无关紧要。但是如果没有更改脚本,则键保持不变。

如何应用索引以便我的JSON过滤器操作变得更快?同一个表包含同一JSON行和跨行中的许多键。索引所有密钥以便过滤效率不高是不是效率低吗?

0 个答案:

没有答案