PostgreSQL REINDEX


PostgreSQL REINDEX

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

什么是 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命令重建从基本的,其具有相同的结果,删除并重新创建索引的索引内容。

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

让我们看看REINDEX、**DROP 索引 和 Create 索引之间的不同。**

REINDEX 命令

  • REINDEX 命令锁定索引所属表的写入,但不锁定读取

DROP index 和 Create Index 命令

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

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

概述

PostgreSQLReindex部分,我们学习了REINDEX命令来删除和重建多个索引。