具有动态键的 JSON 字段索引

Mad*_*ads 6 postgresql index json postgresql-9.5

我使用的是 PG 9.5,我有一个表 Visitor(id, data::json)

例子:

Visitor(id: 1, data: {name: 'Jack', age: 33, is_user: true })
Run Code Online (Sandbox Code Playgroud)

我想执行类似的查询

  • 给我所有姓名为 Jack 且年龄 > 25 的访客
  • 给我所有是用户但名称未指定的访问者(密钥不在 json 中)

数据列内的键是用户指定的,因此是动态的。

在这种情况下哪个索引最有意义?

Art*_*yan 0

第一次查询时尝试这样做

create index IX_1 on Visitor using BTree((data->>'age')::INT)

这是第二个查询

create index IX_2 on Visitor using BTree((data->>'is_user')::INT, (data->>'Name'))

  • 他说这些密钥是用户生成的,因此不会覆盖新的案例。 (5认同)