【发布时间】:2021-01-04 23:03:37
【问题描述】:
我有两个表,ClaimPaymentHistory 和 RemittanceHistory,我目前正在加入以下查询。
select rh."EventHistory"
from "ClaimPaymentHistory" ph, jsonb_array_elements(ph."EventHistory") payments
inner join "RemittanceHistory" rh
on payments->> 'rk' = rh."RemittanceRefKey"::text
where ph."ClaimRefKey" = @ClaimRefKey
我想使用以下索引改进此查询:
CREATE INDEX claim_payment_history_gin_idx ON "ClaimPaymentHistory"
USING gin ("EventHistory" jsonb_path_ops)
但我似乎没有得到任何改善。但是,如果我使用 @> 运算符查询该表的 EventHistory 列,我可以看到该索引被利用,例如:
select * from "ClaimPaymentHistory" where "EventHistory" @> '[{"rk": 637453920516771103}]';
所以我的问题是,我可以使用包含运算符创建连接吗?我一直在玩语法,但什么都做不了。
如果我无法使用该运算符创建连接,我最好的索引选择是什么?
【问题讨论】:
-
与您的问题无关,但是:您应该真正避免使用那些可怕的带引号的标识符。他们的麻烦比他们的价值要多得多。 wiki.postgresql.org/wiki/…
-
啊,我不知道。这个项目是我第一次使用 postgres,是的,标识符周围的语法让我发疯。
标签: sql postgresql indexing jsonb