在JSONB列上使用OR运算符进行查询

时间:2017-03-28 08:40:55

标签: postgresql jsonb postgresql-9.5

我在metadata表上有一个名为users的JSONB列。我想让metadata->a->b为5,6或7的用户。我可以这样做:

SELECT * FROM users 
WHERE metadata @> '{"a": {"b": 5}}' 
   OR metadata @> '{"a": {"b": 6}}' 
   OR metadata @> '{"a": {"b": 7}}'; --etc.

有更有效的方法来执行这样的查询吗?像JSONB的IN

1 个答案:

答案 0 :(得分:1)

... WHERE metadata->'a'->>'b' IN (5, 6, 7)

您可以在可能帮助的表达式上创建B树索引:

CREATE INDEX ON users ((metadata->'a'->>'b'));