PostgreSQL 中的单查询更新:性能提升
与许多数据库系统一样,PostgreSQL 提供了使用单个查询同时更新多行的有效方法。这种方法显着提高了性能,特别是在处理大量数据集时。
带有 UPDATE
子句的 SET
语句提供了一种简单的条件更新方法。 例如,要根据 column_a
中的不同值修改 column_b
,您可以使用以下简洁的语法:
<code class="language-sql">UPDATE table_name SET column_a = 1 WHERE column_b = '123', column_a = 2 WHERE column_b = '345';</code>
但是,对于涉及多个列的更复杂的更新,UPDATE ... FROM
构造提供了卓越的灵活性。这涉及构建一个临时映射表来指定更新。
让我们用一个基于 column_a
更新 column_c
和 column_b
的示例来说明:
<code class="language-sql">UPDATE test AS t SET column_a = c.column_a, column_c = c.column_c FROM (VALUES ('123', 1, '---'), ('345', 2, '+++') ) AS c(column_b, column_a, column_c) WHERE c.column_b = t.column_b;</code>
此查询利用 VALUES
子句来定义映射表 c
,根据匹配的 test
值有效地将新值链接到 column_b
中的现有行。 这种简化的方法允许在单个查询中进行高效的多列更新。
以上是如何使用单个查询高效更新 PostgreSQL 中的多行?的详细内容。更多信息请关注PHP中文网其他相关文章!