我在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
?
答案 0 :(得分:1)
... WHERE metadata->'a'->>'b' IN (5, 6, 7)
您可以在可能帮助的表达式上创建B树索引:
CREATE INDEX ON users ((metadata->'a'->>'b'));