PostgreSQL Reindex重建索引

在本节中,我们将了解PostgreSQL REINDEX 命令的工作原理,该命令用于重新创建多个索引,并查看REINDEX 命令与删除和创建索引命令之间的区别。

什么是 PostgreSQL REINDEX 命令?

实际上,由于软件问题或硬件故障,PostgreSQL 索引可能会被更改,不再具有有效数据。因此,我们可以使用REINDEX命令来改善索引。

换句话说,我们可以说 REINDEX 命令用于重建一个或多个索引。

PostgreSQL REINDEX 命令的语法

REINDEX命令说明如下:

REINDEX [ ( VERBOSE ) ] { INDEX | TABLE | SCHEMA | DATABASE | SYSTEM } name;  

在上图中,我们使用了以下关键字,如下表所示:

参数 描述
REINDEX 它是一个关键字,用于重新创建各种索引。
VERBOSE 如果我们涉及 VERBOSE 关键字,那么一旦所有索引都重新建立索引,该命令就会显示进度报告。它是一个可选关键字。

现在,我们将看到以下插图,它们在REINDEX命令中最常用。

  • 重新创建单个索引

我们可以在REINDEX INDEX子句后定义索引名来重建单个索引,语法如下:

REINDEX INDEX index_name;  
  •  重建表的所有索引

我们可以使用TABLE关键字并描述要重建的表的名称

表的每个索引,如以下语法所示:

REINDEX TABLE table_name;  
  • 重构中的索引

如果我们需要改造一个模式中的所有索引,我们可以在模式名称后面使用SCHEMA关键字,如下图所示:

REINDEX SCHEMA schema_name;  
  • 在特定数据库中重新创建所有索引

如果我们想要重建或重新创建特定数据库中的所有索引,我们可以在REINDEX DATABASE子句之后定义数据库名称,如我们在以下语法中所见:

REINDEX DATABASE database_name;  
  • 重建系统目录上的所有索引

我们可以使用下图在特定数据库中重新创建系统目录上的所有索引:

REINDEX SYSTEM database_name;  

REINDEX 与 DROP INDEX 和 CREATE INDEX 命令

REINDEX命令从 basic 重建索引内容,其结果与删除并重新创建索引相同。

但是,重新索引、删除索引和创建索引之间的锁定机制是不同的。

让我们看看REINDEX、DROP 索引和 Create 索引之间的差异。

REINDEX 命令

  • REINDEX 命令锁定索引所属表的写入而不是读取。

DROP 索引和创建索引命令

首先,我们将使用DROP INDEX命令,它通过获取表的排他锁来帮助我们定位索引所在表的写入和读取。

之后,我们使用了CREATE INDEX 命令来锁定索引的第一个表中的写入而不是读取。但是,在整个索引的形成过程中,读取可能是排他的。

热门文章

优秀文章