首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PostgreSQL中用布尔值索引所有JSONB字段的最佳方法

在PostgreSQL中用布尔值索引所有JSONB字段的最佳方法
EN

Stack Overflow用户
提问于 2019-11-08 01:29:00
回答 1查看 693关注 0票数 0

我正在创建一个具有features jsonb列的表。将会有一组动态的特性(每一行都可以有一组未知的特性)。每个特性都是布尔值真假值。

示例:

  • 第1排:特征:{“高兴”:真,“高”:假,“动机”:真}
  • 排2:特征:{“高兴”:真,“快”:真,“强”:假}
  • 排3:特征:{“智能”:真,“快”:真,“困”:假}

对该列进行索引的最佳方法是什么,这样我就可以使用featureX = true查询所有行?我所查找的所有示例似乎都需要一个字段名作为索引的基础。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-08 06:43:47

您可以在完整的JSON值上创建索引:

代码语言:javascript
复制
create index on the_table using gin (features);

它可以用于例如@>操作符:

代码语言:javascript
复制
select *
from the_table
where features @> '{"happy": true}'

另一种方法是不存储键/值对,而只列出数组中"true“的特性:["happy", "motivated"],然后使用?运算符。这样,JSON值就会更小一些,这可能会更有效。

代码语言:javascript
复制
select *
from the_table
where features ? 'happy'

或者,如果您想测试多个特性:

代码语言:javascript
复制
select *
from the_table
where features ?| array['happy', 'motivated']

这也可以利用GIN索引。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58759162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档