我有一个json,将其作为jsonb存储在postgres中。
{
"name": "Mr. Json",
"dept":{
"team":{
"aliases":["a1","a2","a3"],
"team_name": "xyz"
},
"type":"engineering",
"lead":"Mr. L"
},
"hobbies": ["Badminton", "Chess"],
"is_active": true
}
已在该列上创建了GIN索引。
我需要进行精确匹配查询,例如所有包含type='engineering'和lead='Mr. L'的行。目前我正在执行包含查询,例如:
data @> '{"dept":{"type":"engineering"}}' and data @> '{"dept":{"lead":"Mr. L"}}'
我看到了显示GIN索引正在使用的查询计划,但我不确定这是否有效,或者是否有更好的方法来实现这一点。
我需要在嵌套键上构建另一个索引吗?
对jsonb列进行索引会索引嵌套键还是只索引顶级键?
此外,请分享一些关于此内容的好资源。
data @> '{"dept":{"lead":"Mr. L","type":"engineering"}}'
呢?这样你的查询会使用两次索引,而这种方式(等效)只会使用一次。 - pozs