小编Nee*_*pta的帖子

为模式匹配搜索索引jsonb数据

这是对jsonb键/值的模式匹配的后续跟进

我有一张桌子如下

CREATE TABLE "PreStage".transaction (
  transaction_id serial NOT NULL,
  transaction jsonb
  CONSTRAINT pk_transaction PRIMARY KEY (transaction_id)
);
Run Code Online (Sandbox Code Playgroud)

我的事务jsonb列中的内容看起来像

{"ADDR": "abcd", "CITY": "abcd", "PROV": "",
 "ADDR2": "",
 "ADDR3": "","CNSNT": "Research-NA", "CNTRY": "NL", "EMAIL": "@.com",
             "PHONE": "12345", "HCO_NM": "HELLO", "UNQ_ID": "", 
             "PSTL_CD": "1234", "HCP_SR_NM": "", "HCP_FST_NM": "",
             "HCP_MID_NM": ""}
Run Code Online (Sandbox Code Playgroud)

我需要搜索查询,如:

SELECT transaction AS data FROM   "PreStage".transaction
WHERE  transaction->>'HCP_FST_NM' ILIKE '%neer%';
Run Code Online (Sandbox Code Playgroud)

但我需要让我的用户灵活地搜索任何键/值.

对上一个问题的回答建议将索引创建为:

CREATE INDEX idxgin ON "PreStage".transaction
USING gin ((transaction->>'HCP_FST_NM') gin_trgm_ops);
Run Code Online (Sandbox Code Playgroud)

哪个有效,但我也想索引其他键.因此尝试了类似的事情:

CREATE INDEX idxgin ON "PreStage".transaction USING gin …
Run Code Online (Sandbox Code Playgroud)

postgresql indexing pattern-matching jsonb

4
推荐指数
2
解决办法
2053
查看次数

标签 统计

indexing ×1

jsonb ×1

pattern-matching ×1

postgresql ×1