PostgreSQL教程

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名称之后使用 SCHEMA 关键字,如下图所示:
REINDEX SCHEMA schema_name;
要在特定数据库中重新创建所有索引
如果要重建或重新创建特定数据库中的所有索引,可以在 REINDEX DATABASE 子句之后定义数据库名称,如以下语法所示:
REINDEX DATABASE database_name;
要重建系统目录上的所有索引
我们可以使用下图在特定数据库中的系统目录上重新创建所有索引:
REINDEX SYSTEM database_name;

REINDEX与DROP INDEX和CREATE INDEX命令

REINDEX 命令从基本索引重建索引内容,其结果与drop相同
但是,重新索引,放置索引和创建索引之间的锁定机制并不相同。
让我们看看 REINDEX, DROP索引和创建索引之间的差异。

REINDEX命令

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

DROP索引和创建索引命令

首先,我们将使用 DROP INDEX 命令,这有助于我们找到两个 写入和读取索引所在的表。
此后,我们使用了CREATE INDEX命令可以锁定索引的第一个表中的写入但不读取。不过,读取可能在整个索引形成过程中都是排他性的。

概述

在 PostgreSQL 重新索引部分,我们了解了 REINDEX 命令可以删除并重建多个索引。

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4