【问题标题】:What is the fastest way to do LIKE queries on jsonb/json columns in PostgreSQL?在 PostgreSQL 中对 jsonb/json 列进行 LIKE 查询的最快方法是什么?
【发布时间】: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


【解决方案1】:

只需建立正确的索引。

create index on x using gin (("jsonb"::text) gin_trgm_ops);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 2022-01-26
    • 2012-04-12
    • 1970-01-01
    • 2017-11-01
    相关资源
    最近更新 更多