【发布时间】:2021-11-19 19:21:13
【问题描述】:
如果我有一个名为configurations 的表,其中行包含一个名为data 的jsonb 列,其值类似于以下内容:
{
"US": {
"1234": {
"id": "ABCD"
}
},
"CA": {
"5678": {
"id": "WXYZ"
}
}
}
我希望能够编写类似于以下内容的查询:
select * from configurations where data->'$.*.*.id' = 'WXYZ'
(请注意:我知道上面的 SQL 是不正确的,把它当作伪。)
问题:
- 执行我上面写的查询的正确语法是什么?
- 我需要创建什么类型的索引来确保我不会使用上一个问题中的任何查询来扫描整个表?
【问题讨论】:
-
为什么不规范化你的数据模型?
-
因为此列中的值在结构上会有所不同,并代表来自外部系统的信息。
标签: json postgresql indexing jsonb