gpt4 book ai didi

postgresql - 在 PostgreSQL 中使用 bool 值索引所有 JSONB 字段的最佳方法

转载 作者:行者123 更新时间:2023-11-29 14:08:05 25 4
gpt4 key购买 nike

我正在创建一个包含 features jsonb 列的表。将有一组动态的特征(每行可以有一组未知的特征)。每个特征都是 bool 真/假值。

示例:

  • 第 1 行:特征:{“快乐”:正确,“高大”:错误,“有动力”:正确 }
  • 第 2 行:特征:{ "happy": true, "fast": true, "strong": false }
  • 第 3 行:特征:{“聪明”:正确,“快速”:正确,“困倦”:错误}

索引此列的最佳方法是什么,以便我可以查询以查找 featureX = true 的所有行?我查找的所有示例似乎都需要一个字段名称作为索引的基础。

最佳答案

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

create index on the_table using gin (features);

它可以用于例如@> 运算符:

select *
from the_table
where features @> '{"happy": true}'

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

select *
from the_table
where features ? 'happy'

或者如果您想测试多项功能:

select *
from the_table
where features ?| array['happy', 'motivated']

那也可以利用GIN索引

关于postgresql - 在 PostgreSQL 中使用 bool 值索引所有 JSONB 字段的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58759162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com