JSONB数组元素索引

时间:2019-11-06 07:29:07

标签: postgresql indexing jsonb

Postgres 11中有表格:

_order
-----------
id

items: jsonb: [{'id': 1},{'id': 5}...]

property
-----------
item_id

value

我们需要获取已设置property.value的每个订单的订单清单,其中包含每个订单的商品阵列。

我使用这样的查询:

select
     _order.*,
     jsonb_agg(distinct property.value) filter (where property.value is not null) as listed_items
from _order
left join jsonb_array_elements(items) jae on true
left join property on ((jae->'id')::int = property.id)
group by _order.id

_order.id, property.item_id - primary keys

对于真实数据(每8k订购500个项目,总计约400万行),查询工作太慢-大约25秒。

_order.items上添加GIN索引后,查询开始工作15秒钟,但速度却很慢。

问题:如何从jsonb中为数组id建立索引?我发现如何才能做到这一点,而不是数组。

也许您对如何优化货币数据库架构的查询有任何想法?

0 个答案:

没有答案