在 JSONB 列上使用 OR 运算符进行查询
Queries with OR operator on JSONB column
我在 users
table 上有一个名为 metadata
的 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
?
... WHERE metadata->'a'->>'b' IN (5, 6, 7)
您可以在 可能 帮助的表达式上创建 B 树索引:
CREATE INDEX ON users ((metadata->'a'->>'b'));
我在 users
table 上有一个名为 metadata
的 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
?
... WHERE metadata->'a'->>'b' IN (5, 6, 7)
您可以在 可能 帮助的表达式上创建 B 树索引:
CREATE INDEX ON users ((metadata->'a'->>'b'));