在PostgreSQL中对jsonb/json列执行LIKE查询的最快方法是什么?

hrirmatl  于 2023-02-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(281)

我们有一个包含两列的PostgreSQL 14数据库:一个jsonb和一个json列。第一个用于快速jsonpath查询,并有一个GIN索引。第二个只是保留原始JSON。我想使用文本片段在json中进行文本搜索。但是,像这样使用LIKE操作符相当慢(正如预期的那样):

and x."jsonb" ::text LIKE '%"test" : 10%'

当我想在JSON中的任何地方搜索这个时:

"test" : 10

看起来使用jsonpath在没有正则表达式的情况下实现全文搜索并不容易,正则表达式也很慢,我并不是真的想要全文搜索,也不是真的想要与JSON中的特定键进行比较。
做这样一个查询最快的方法是什么?当然我仍然可以限制搜索条目的数量与日期,但它会很好有一些快得多。

mfuanj7w

mfuanj7w1#

只需构建正确的索引。

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

相关问题