返回今日选题

已核验 · Aug 11, 2026

已独立佐证

PostgreSQL 17 中的 JSON_TABLE:JSON 到关系查询成为一等公民 —— 连接 JSON 和 SQL 世界的属性

2 个信源

PostgreSQL 17 引入 JSON_TABLE —— 一个把 JSON 文档转成关系表的函数,让 SQL 查询能跑在 JSON 数据上,不用先 flatten 成列。JSON 到关系查询以前可以用 jsonb_to_recordset + LATERAL join 做到,但 JSON_TABLE 让这个模式变成数据库优化器能原生规划的一等 SQL 语法。这个属性连接 JSON 和 SQL 世界:存 JSON 文档的创作者现在能用 SQL 查询跑它们,就像它们是关系表,不用显式 flatten。PG 17 还加了 MERGE / RETURNING(单语句条件 insert / update / delete 带受影响行返回)、逻辑复制 failover(副本提升不用 restart)、B-tree deduplication。

为什么现在讲

PG 17 发 JSON_TABLE —— 存 JSON 的创作者现在能跑 SQL 查询 JSON 数据,不用显式 flatten。

推荐理由

演示空间:同一 JSON 到关系查询在 PG 17 前后的并排(jsonb_to_recordset vs JSON_TABLE)。

依据

PostgreSQL 17 release notes + The Decoder 周报

PostgreSQL 17 发 JSON_TABLE —— 以前需要 LATERAL join 的 JSON 到关系查询模式现在变成数据库优化器能原生规划的一等 SQL 语法。

切入角度

把 JSON_TABLE 框成连接 JSON 和 SQL 世界的属性 —— 存 JSON 的创作者现在能跑 SQL 查询 JSON 数据,不用显式 flatten。

形式

长视频讲解

演示想法

录一段 10 分钟讲解:3 分钟讲「JSON 到关系桥接」框架,3 分钟讲 JSON_TABLE 语法,2 分钟做并排查询 demo(jsonb_to_recordset vs JSON_TABLE),2 分钟讲其他 PG 17 特性(MERGE / RETURNING + 逻辑复制 failover)。

平台注意

具体性能 benchmark 数字(超出本次捕获范围)未抽取;以创作者侧 benchmark 为准,不要给出具体提升百分比。具体迁移步骤(超出本次捕获范围)未抽取;生产迁移前对照官方升级指南。

可用说法

  • PostgreSQL 17 达到 GA —— JSON-to-relational 查询的 JSON_TABLE、MERGE / RETURNING、逻辑复制故障转移、COPY 性能改进、B-tree 去重。

证据链

拆解

PG 17 中的 JSON_TABLE 让 JSON 到关系查询变成一等 SQL 语法(相比以前的 jsonb_to_recordset + LATERAL workaround)。本篇让桥接属性跟 workaround 属性保持独立,而不是把「JSON 到关系」当成单一能力。

风险

  • The Decoder 和 IT之家可用作媒体类佐证,但在对外表述任何具体性能声明或定价前,请先阅读厂商原始文档。在对外表述前,请对照厂商原始文档和实际许可 / 定价矩阵核实具体能力声明;不要把各平台定价或许可条款转述成具体美元数字或商业使用条款。
  • 发布说明确认了新特性,但具体迁移步骤本次未提取。在对外表述前,请对照厂商原始文档和实际许可 / 定价矩阵核实具体能力声明;不要把各平台定价或许可条款转述成具体美元数字或商业使用条款。

演示思路

  • 并排 JSON 到关系查询:jsonb_to_recordset + LATERAL vs JSON_TABLE
  • 迁移故事:「把存 JSON 的 schema 迁到用 JSON_TABLE」,量查询简化
  • PG 17 特性走查:JSON_TABLE + MERGE / RETURNING + 逻辑复制 failover + B-tree deduplication,每个附查询 demo