我有一个postgres表,它有一个jsonb列,其中包含了我们要查询的列表。
{"org": 3, "subscriberCodes": ["A555", "A666"]}
我希望能够查询表搜索的订户代码。
我知道我可以做一个类似的查询:
SELECT *
FROM permissions.application_settings
WHERE configuration->>'subscriberCodes' LIKE '%A555%'
但这有几个问题,我必须对每个订阅者代码触发一个查询(我试图弄清楚如何执行WHERE IN子句,但不太明白),并且它最终会对整个表进行顺序扫描(这对我们拥有的记录数量来说不是很好)。
我对jsonb还不是很熟悉,有没有一种方法可以使用WHERE IN子句,并在订阅者代码数组上创建索引,这样就不需要顺序扫描了?
1条答案
按热度按时间brgchamk1#
最好知道你打算如何查询列which functions and operators,你将使用什么下标,这有助于选择一个合适的索引。你可以从索引整个内容开始,以便使用
jsonpath
:demoexpression/functional index可以将索引限制为下标:
您也可以坚持使用非jsonpath方法: