PostgreSQL 17:两项小改进带来的重大影响

PostgreSQL 17:两项小改进带来的重大影响

💡 原文英文,约1500词,阅读约需6分钟。
📝

内容提要

PostgreSQL 17 引入了两个新功能:MERGE() 和 JSON_TABLE。MERGE() 允许将一个表中的数据与另一个表进行批量对比,提高吞吐量。JSON_TABLE 将 JSON 数据转换为关系表,使其更易于使用。这些新增功能使 PostgreSQL 更高效且更易于使用。

🔎

延伸解读

MERGE 的调试利器:RETURNING 与 MERGE_ACTION()

PostgreSQL 17 为 MERGE 命令新增了 RETURNING 和 MERGE_ACTION() 子句。MERGE_ACTION() 能明确指示每一行执行的操作类型(如 INSERT 或 UPDATE),结合 RETURNING 可以返回操作后的行数据。当 MERGE 的逻辑分支变得复杂时,这一组合能帮助开发者快速定位数据变更是否符合预期,从而简化调试过程。

JSON_TABLE:让 JSON 数据直接参与 SQL 运算

JSON_TABLE 是 PostgreSQL 17 引入的另一个实用功能,它能将 JSON 数据临时转换为关系表,并指定列名和数据类型。转换后的临时表可以直接使用 SQL 的聚合、窗口函数或 CTE 等高级特性进行处理。例如,可以从 JSON 数组中提取字段并筛选,这为处理存储在 JSON 列中的数据提供了更灵活的工具。

对迁移用户的现实意义

MERGE 和 JSON_TABLE 在其他数据库系统中已存在一段时间,并证明了其实用性。PostgreSQL 17 加入这两个功能后,从其他数据库迁移到 PostgreSQL 的用户面临的障碍更少,因为熟悉的操作方式得以保留。这降低了迁移的学习成本,也使得 PostgreSQL 在处理事务日志和 JSON 数据时更加得心应手。

❓

Q&A

PostgreSQL 17 新增了哪些功能?

PostgreSQL 17 新增了 MERGE() 和 JSON_TABLE 两个功能。

MERGE() 功能如何提高数据处理效率?

MERGE() 允许批量对比和修改数据,显著提高吞吐量,避免逐行处理。

JSON_TABLE 是什么,它有什么用?

JSON_TABLE 将 JSON 数据转换为关系表,使得可以使用 SQL 进行处理。

MERGE() 中的 RETURNING 和 MERGE_ACTION() 有什么作用?

RETURNING 提供执行结果,MERGE_ACTION() 指示每行的操作类型,如 INSERT 或 UPDATE。

如何使用 JSON_TABLE 处理 JSON 数据?

可以通过 JSON_TABLE 将 JSON 数据转换为临时表,然后使用 SQL 进行查询和处理。

PostgreSQL 17 对于从其他数据库迁移的用户有什么帮助?

新增的 MERGE() 和 JSON_TABLE 功能降低了迁移的难度,提供了熟悉的操作方式。

🏷️

标签

➡️

继续阅读