我在postgres数据库中有以下数据结构 - 一个名为customer
的jsonb列
{
"RequestId": "00000000-0000-0000-0000-000000000000",
"Customer": {
"Status": "A",
"AccountId": 14603582,
"ProfileId": 172,
"ReferralTypeId": 15
}
"Contact": {
"Telephone": "",
"Email": ""
}
}
我想在ProfileId
字段上创建一个索引,这是一个整数。
我一直无法找到如何在嵌套字段上创建索引的示例。
我正在执行的查询(需要约300秒)是:
select id, customer from where customer @> '{"Customer":{"ProfileId": 172}}'
答案 0 :(得分:1)
GIN索引support the @>
operator的运算符类jsonb_path_ops
和jsonb_ops
。
因此,您的查询应该能够使用以下索引
create index on the_table using gin (customer);
使用默认的jsonb_ops
运算符。
根据手册,jsonb_path_ops
运算符速度更快,但仅支持@>
运算符。因此,如果这是您拥有的唯一条件类型(对于该列),使用jsonb_path_ops
可能会更有效:
create index on the_table using gin (customer jsonb_path_ops);