小编Ami*_*ubi的帖子

postgresql 中 jsonb 键的索引

我正在使用 PostgreSQL。有没有办法只在字典键而不是值上创建索引

例如,想象一个 jsonb 列,如下所示:

select data from tablename where id = 0;

answer: {1:'v1', 2:'v2'}
Run Code Online (Sandbox Code Playgroud)

我想在键集(或键列表)上建立索引,该键集是[1, 2]. 为了加快查询速度,例如:

select count(*) from tablename where data ? '2';
Run Code Online (Sandbox Code Playgroud)

正如您在docs中看到的,有一种方法可以对列进行完全索引(键+值):

CREATE INDEX idxgin ON api USING GIN (jdoc);
Run Code Online (Sandbox Code Playgroud)

考虑到我在值中存储了大量数据,这对我来说不好。

我之前尝试过这个:

CREATE INDEX test ON tablename (jsonb_object_keys(data));
Run Code Online (Sandbox Code Playgroud)

错误是:

ERROR:  set-returning functions are not allowed in index expressions
Run Code Online (Sandbox Code Playgroud)

另外,我不想将键作为值存储在字典中。

你能帮助我吗?

postgresql indexing jsonb

5
推荐指数
1
解决办法
3148
查看次数

标签 统计

indexing ×1

jsonb ×1

postgresql ×1