Postgres jsonb null vs 空对象查询性能

Posted

技术标签:

【中文标题】Postgres jsonb null vs 空对象查询性能【英文标题】:Postgres jsonb null vs empty object query performance 【发布时间】:2016-03-29 13:48:30 【问题描述】:

假设有以jsonb 格式存储的键值数据字段,对于某些(少数)记录可能不存在,那么对于这种情况,什么是可取的,性能明智的 - 空字段或空 json 对象?

要通过一些键值条件来查询数据并不比:

SELECT * FROM table WHERE id = :id AND jsondata @> '"key1":"value1"

将来可能会被索引,所以关注的是查询 - 是否会比空对象更快地跳过空字段?

【问题讨论】:

【参考方案1】:

NULL 以位集的形式存储在行标题中,因此可以略快地跳过它们,但如果您只有“少数”记录具有 NULL 值,则差异不太可能很明显。

您还可以创建部分索引来排除 NULL。

【讨论】:

以上是关于Postgres jsonb null vs 空对象查询性能的主要内容,如果未能解决你的问题,请参考以下文章

Postgres 合并为空 JSONB 数组

jsonb[] vs jsonb,其中 json 是一个数组

postgres 将 jsonb[] 更改为 jsonb

从 postgres 表中提取 json 数组给出错误:无法从标量中提取元素

弹簧靴 | JSONB Postgres |异常:无法加载类 [jsonb]

Postgres 数组列与 JSONB 列