PostgreSQL 部分索引

2025年3月17日 | 阅读 3 分钟

在本节中,我们将了解 PostgreSQL 部分索引的工作原理,它通过减少索引大小来提高命令的性能。

什么是 PostgreSQL 部分索引?

到目前为止,我们已经了解了如何将各种列的值添加到索引。 部分索引是 PostgreSQL 索引中使用的下一个命令。

它允许我们定义可以被索引的表的行。 因此,我们将使用部分索引来加速查询,同时减小索引的大小。

换句话说,我们可以说 PostgreSQL 部分索引是一个基于表的一个子集构建的索引。 部分索引的谓词是一个由条件表达式定义的良好定义的子集。

并且该索引仅对那些满足谓词的表行进行访问。

假设我们使用了具有常量值的 WHERE 条件,那么在这种情况下,我们可以选择 PostgreSQL 部分索引,因为它非常有利。

注意:如果列名包含 constant_value,那么我们可以使用以下说明

PostgreSQL 部分索引的语法

指定部分索引的语法如下

在上面的说明中,WHERE 子句用于定义添加到索引的那些行。

PostgreSQL 部分索引的示例

让我们看一个示例来了解 PostgreSQL 部分索引的工作原理。

我们将使用 CREATE 命令的帮助创建一个新表,命名为 Buyer,并使用 INSERT 命令插入一些值。

要将 Clients 创建到 Organization 数据库中,我们使用 CREATE 命令

输出

执行上述命令后,我们将获得以下消息窗口,它显示 Buyer 表已成功创建到 Organization 表中。

PoatgreSQL Partial Index

成功创建 Buyer 表后,我们将使用 INSERT 命令的帮助在其中输入一些值。

输出

执行上述命令后,我们将获得以下消息窗口,它显示特定的值已成功插入到 Buyer 表中。

PoatgreSQL Partial Index

通常,如果我们对不活跃的买家感兴趣,并且经常进行一些跟进以让他们重新购买更多商品。

在下面的命令中,我们尝试识别所有不活跃的买家

输出

成功执行上述命令后,我们将获得以下结果,它显示了所有不活跃的买家信息

PoatgreSQL Partial Index

在下面的命令中,我们使用 EXPLAIN 关键字来执行上述命令,因为查询计划器需要扫描 Buyer

输出

执行上述命令后,我们将获得以下输出,它显示了 Buyer 表的查询计划

PoatgreSQL Partial Index

在这里,我们还可以通过为 active 列创建一个索引来增强命令,如下面的命令所示

输出

执行上述命令后,我们将收到以下消息:索引 idex_buyer_active 已成功创建

PoatgreSQL Partial Index

上面创建的索引满足了它的目的,但它也包含了一些从未搜索过的行,特别是所有活跃的买家。

在下面的命令中,我们指定了只包含不活跃买家的索引

输出

执行上述命令后,我们将收到以下消息:索引 idex_buyer_inactive 已成功创建。

PoatgreSQL Partial Index

因此,当 WHERE 子句出现在命令中时,PostgreSQL 将使用部分索引,如下面的命令所示

输出

执行上述命令后,我们将收到以下消息,它显示了 Buyer 表的查询计划,因为 PostgreSQL 优化器正在使用 idex_buyer_inactive 索引。

PoatgreSQL Partial Index

概述

PostgreSQL 部分索引 部分,我们了解了 PostgreSQL 部分索引的工作原理以及如何定义添加到索引的行。


下一个主题PostgreSQL REINDEX