我正在创建一个具有features jsonb列的表。将会有一组动态的特性(每一行都可以有一组未知的特性)。每个特性都是布尔值真假值。
示例:
对该列进行索引的最佳方法是什么,这样我就可以使用featureX = true查询所有行?我所查找的所有示例似乎都需要一个字段名作为索引的基础。
发布于 2019-11-08 06:43:47
您可以在完整的JSON值上创建索引:
create index on the_table using gin (features);它可以用于例如@>操作符:
select *
from the_table
where features @> '{"happy": true}'另一种方法是不存储键/值对,而只列出数组中"true“的特性:["happy", "motivated"],然后使用?运算符。这样,JSON值就会更小一些,这可能会更有效。
select *
from the_table
where features ? 'happy'或者,如果您想测试多个特性:
select *
from the_table
where features ?| array['happy', 'motivated']这也可以利用GIN索引。
https://stackoverflow.com/questions/58759162
复制相似问题