首页 >数据库 >mysql教程 >PostgreSQL 对计算列的支持是如何演变的?

PostgreSQL 对计算列的支持是如何演变的?

Susan Sarandon
Susan Sarandon原创
2025-01-21 17:16:09324浏览

How Has PostgreSQL's Support for Computed Columns Evolved?

PostgreSQL 计算列:回顾

PostgreSQL 作为一款强大的关系型数据库管理系统,提供了广泛的数据操作和管理功能。然而,计算列(也称为计算列、虚拟列、派生列或生成列)在其功能中一直缺失。本文深入探讨 PostgreSQL 中对计算列的支持,考察其在不同版本中的演变。

PostgreSQL 11 及更早版本

在 PostgreSQL 11 之前,数据库并不直接支持计算列。但是,用户可以使用带属性表示法 (tbl.col) 的函数来模拟虚拟计算列。此技术提供了一种类似于虚拟生成列的变通方法。然而,它的使用需要在 SELECT 查询中显式列出表达式。

PostgreSQL 12 及更高版本

随着 PostgreSQL 12 的出现,数据库引入了 STORED 生成列,这与 SQL 标准一致,并符合 DB2、MySQL 和 Oracle 等 DBMS 中的实现。这些计算列存储在表的数据中,并根据指定的表达式自动更新。

考虑以下示例:

<code class="language-sql">CREATE TABLE tbl (
  int1    int
, int2    int
, product bigint GENERATED ALWAYS AS (int1 * int2) STORED
);</code>

在此示例中,“product” 列是一个 STORED 生成列,它计算 int1 和 int2 的乘积。

替代方案

在不直接支持生成列的 PostgreSQL 版本中,可以使用其他方法:

  • 视图 (VIEWs): 视图可以通过定义生成所需列值的查询来模拟计算列的行为。
  • 表达式索引 (Expression Indexes): 表达式索引可以通过在计算列的表达式上创建索引来提高涉及计算列的查询的性能。
  • 物化视图 (Materialized Views): 物化视图是查询的预计算版本,可以提高查询性能。在提供预计算值方面,它们的功能类似于计算列。

结论

PostgreSQL 对计算列的支持在其各个版本中都有显着的改进。虽然在 PostgreSQL 11 之前没有明确包含计算列,但数据库提供了使用函数和属性表示法的变通方法。 PostgreSQL 12 引入了 STORED 生成列,从而在数据库本身中支持计算列。这些改进为用户提供了数据操作方面的额外灵活性和性能优化。

以上是PostgreSQL 对计算列的支持是如何演变的?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn