如何索引使用 Getpath 运算符 #>> 的 json 嵌套列,以便我们可以获取特定值
How to index a jsonb nexted column that uses Getpath operator #>> so we can a specfic value
我们有一个 jsonb 列 'roller' as
{
"roller": {
"dob": "8/16/1956",
"ext": {
"helio_status": ""
},
"grade": "11",
"gender": "M",
"sis_id": "3456704387",
"location": {
"zip": "99999"
},
"state_id": "546556560",
"roller_number": "ASWE51460438"
}
}
我们传递一个我们想在{roller, sis_id}
中找到的变量来检查它是否存在
u.roller#>>'{roller, sis_id}' = 'SE223dsd'
我们在 roller 上创建了一个 gin 索引,但它不起作用,它总是对所有索引进行 seq 扫描。
是否有特定类型的索引会更好?感谢任何帮助。
如果您总是 查找特定路径,则常规 B-Tree 索引可能是最佳选择:
create index on the_table ( (roller#>>'{roller, sis_id}') );
您必须确保始终在 WHERE 子句中使用表达式 roller#>>'{roller, sis_id}'
。不是等价的东西,例如roller -> 'roller' ->> 'sis_id'
我们有一个 jsonb 列 'roller' as
{
"roller": {
"dob": "8/16/1956",
"ext": {
"helio_status": ""
},
"grade": "11",
"gender": "M",
"sis_id": "3456704387",
"location": {
"zip": "99999"
},
"state_id": "546556560",
"roller_number": "ASWE51460438"
}
}
我们传递一个我们想在{roller, sis_id}
中找到的变量来检查它是否存在
u.roller#>>'{roller, sis_id}' = 'SE223dsd'
我们在 roller 上创建了一个 gin 索引,但它不起作用,它总是对所有索引进行 seq 扫描。
是否有特定类型的索引会更好?感谢任何帮助。
如果您总是 查找特定路径,则常规 B-Tree 索引可能是最佳选择:
create index on the_table ( (roller#>>'{roller, sis_id}') );
您必须确保始终在 WHERE 子句中使用表达式 roller#>>'{roller, sis_id}'
。不是等价的东西,例如roller -> 'roller' ->> 'sis_id'