↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5 / 6.4
预发布版本文档。 PostgreSQL 19beta4 为测试版本,最终发布内容可能有所不同。

CLUSTER

CLUSTER — 按照一个索引对表进行聚簇

大纲

CLUSTER [ ( option [, ...] ) ] [ table_name [ USING index_name ] ]

其中 option 可以是以下之一:

    VERBOSE [ boolean ]

描述

CLUSTER 命令等价于带 USING INDEX 子句的 REPACK。更多细节参见那里。

参数

table_name #

表的名称(可能是模式限定的)。

index_name #

索引的名称。

VERBOSE #

在每个表被聚簇时,以 INFO 级别打印进度报告。

boolean #

指定所选选项是否开启。可以写 TRUE、ON 或 1 来启用选项,写 FALSE、OFF 或 0 来禁用它。也可以省略 boolean 值,此时假定为 TRUE。

注解

要对表执行聚簇,必须在该表上具有 MAINTAIN 权限。

在 CLUSTER 执行期间,search_path 会被临时设置为 pg_catalog, pg_temp。

因为 CLUSTER 会记住哪些索引已被设为聚簇索引,你可以第一次先手工聚簇需要聚簇的表,然后设置一个定期运行的维护脚本,执行不带任何参数的 CLUSTER,这样这些表就会被周期性地重新聚簇。

每个运行 CLUSTER 的后端都会在 pg_stat_progress_cluster 视图中报告其进度。有关详细信息,请参见第 27.4.2 节。

对分区表进行聚簇时,会使用指定分区索引在各分区上的对应分区索引来聚簇每个分区。对分区表执行聚簇时,索引不可省略。对分区表执行 CLUSTER 不能在事务块内进行。

示例

按照索引 employees_ind 对表 employees 进行聚簇:

CLUSTER employees USING employees_ind;

使用之前用过的同一个索引对 employees 表进行聚簇:

CLUSTER employees;

对数据库中此前已聚簇过的所有表执行聚簇:

CLUSTER;

兼容性

SQL 标准中没有 CLUSTER 语句。

以下语法在 PostgreSQL 17 之前使用,当前仍受支持:

CLUSTER [ VERBOSE ] [ table_name [ USING index_name ] ]

以下语法在 PostgreSQL 8.3 之前使用,当前仍受支持:

CLUSTER index_name ON table_name

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.