首页 > 数据库 > mysql教程 > 如何在 PostgreSQL 中高效查询 JSON 数据中的数组元素?

如何在 PostgreSQL 中高效查询 JSON 数据中的数组元素?

DDD
发布: 2025-01-15 10:00:44
原创
884 人浏览过

How to Efficiently Query for Array Elements within JSON Data in PostgreSQL?

从 PostgreSQL 中的 JSON 数据检索数组元素

PostgreSQL 的 JSON 数据类型(在版本 9.3 中引入)简化了复杂数据结构的存储和管理。 然而,高效查询 JSON 数组中的特定元素可能很棘手。 本指南演示了检索数组元素的有效策略,特别关注对象数组中的“src”字段。

PostgreSQL 9.4 及更高版本的优化方法 (jsonb)

PostgreSQL 9.4 及更高版本提供卓越的 jsonb 数据类型,提供增强的性能和功能。 最有效的方法是使用 @> 运算符和 jsonb_array_elements():

<code class="language-sql">SELECT * FROM reports WHERE data->'objects' @> '[{"src":"foo.png"}]';</code>
登录后复制

这个简洁的查询直接检查“objects”数组是否包含与指定条件匹配的元素。

PostgreSQL 9.3 及更高版本的解决方案 (json)

对于 PostgreSQL 9.3 及更高版本(使用 json 类型),json_array_elements() 函数在横向联接中使用:

<code class="language-sql">SELECT data::text, obj
FROM reports r, json_array_elements(r.data#>'{objects}') obj
WHERE obj->>'src' = 'foo.png';</code>
登录后复制

这种方法取消了数组的嵌套,从而允许检查单个元素。

重要提示:

  • 这些示例假设 JSON 数组内有单层嵌套。 嵌套更深的数组将需要额外的 unnest 调用或横向连接。
  • 对于大量数据集,在“对象”表达式上创建索引对于优化查询性能至关重要。 这显着加快了搜索过程。

以上是如何在 PostgreSQL 中高效查询 JSON 数据中的数组元素?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板