如何索引使用 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'