【发布时间】:2023-02-03 04:56:04
【问题描述】:
我们有一个包含两列的 PostgreSQL 14 数据库:一个 jsonb 和一个 json 列。第一个用于快速 jsonpath 查询并具有 GIN 索引。第二个只是保留原始 JSON。 我想使用文本 sn-ps 在 json 中进行文本搜索。但是,像这样使用 LIKE 运算符相当慢(正如预期的那样):
and x."jsonb" ::text LIKE '%"test" : 10%'
当我想在 JSON 中搜索这个 ANYWHERE 时:
"test" : 10
似乎使用 jsonpath 在没有正则表达式的情况下实现全文搜索并不容易,这也很慢。并不是说我真的想要全文搜索而不是与 JSON 中的特定键进行比较。
进行此类查询的最快方法是什么? 当然,我仍然可以用日期限制搜索条目的数量,但如果能更快一些就更好了。
【问题讨论】:
-
没有好的方法可以做到这一点。考虑使用 JSON 列和任意子字符串搜索的更好的数据模型。
标签: json postgresql jsonb jsonpath