如何用JSONB更快地查询PostgreSQL中的JSON数据 您所在的位置:网站首页 json数据存储查询 如何用JSONB更快地查询PostgreSQL中的JSON数据

如何用JSONB更快地查询PostgreSQL中的JSON数据

2023-06-14 05:49| 来源: 网络整理| 查看: 265

Query JSON data in postgreSQL faster with JSONB

在我作为产品经理的日常工作中,我经常要做一些数据探索以更好地了解我们的客户。

在我们的数据中,存储在一个postgreSQL数据库中,有许多字段被格式化为JSON,我经常要通过这些字段来划分我们的用户。

为此,我使用了JSONB,我想与你分享我在postgres中查询JSON时使用的小技巧和捷径。但首先,什么是JSONB?

什么是JSONB?

JSONB是一种用于存储JSON的结构化格式。JSONB不是以纯文本形式存储数据,而是以二进制格式存储数据。

JSON和JSONB都将允许你存储有效的JSON值。JSON和JSONB的主要区别将是写入和读取效率。由于JSON以全文形式存储数据,编写不需要开销,因此比JSONB稍快,因为JSONB需要将文本转换成二进制。然而,处理JSONB要比处理JSON快得多,因为它不需要重新解析数据。

你可以在PostgreSQL文档中了解更多。

在postgreSQL中查询JSONB

由于我们的PostgreSQL数据库涉及到对JSON数据的大量处理,我们将其存储为JSONB。因此我需要使用JSONB来处理这些JSON数据。那么,这是怎么做的呢?嗯,就像JSON一样,因为JSONB的优点是你可以像操作JSON一样操作它。

让我们考虑一下你的表mytable 中的一个字段myfield. (多么有创意!)

这个字段是一个JSON字段,其值为 。

{ "key1":"valueA", "key2":"valueB" } 复制代码

我想只选择存在 "key1 "并且等于 "valueA "的行。

这通常是用于基于一个值的分段。

选项1:使用@>操作数

SELECT * FROM mytable WHERE myfield @> '{"key1":"valueA"}' 复制代码

选项2:使用->> 操作数

SELECT * FROM mytable WHERE myfield->>'key1'='valueA' 复制代码

->> 操作数将以文本形式返回键key1 的值。你可以使用操作数-> 来返回一个数组。

当访问JSON字段中的值时,以下是我常用的操作数。

操作数

右边操作数类型

说明

->

文本

以数组形式返回与右操作数相关的值。

->>

文本

将与右操作数相关的值作为文本返回。

#>

数组

以数组形式返回特定JSON路径下的值。

#>>

数组

在一个特定的JSON路径下,将值作为文本返回。

@>

JSON字段

左边的JSON是否包含右边的JSON?

'key1' 复制代码

或者,如果你想让它们变成文本

SELECT DISTINCT myfield->>'key1' 复制代码

今天就到这里吧

你可以在PostgreSQL官方文档中找到更多信息。

想了解更多的PostgreSQL技巧吗?请看我们的Postgres骗局表

需要为PostgreSQL建立管理面板或GUI工具吗? 查看PostgreSQL的森林管理



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有