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 命令来锁定索引的第一个表中的写入而不是读取。但是,在整个索引的形成过程中,读取可能是排他的。
热门文章
优秀文章