CLUSTER — 按照一个索引对表进行聚簇
CLUSTER [ (option[, ...] ) ] [table_name[ USINGindex_name] ] 其中option可以是以下之一: VERBOSE [boolean]
CLUSTER 命令等价于带 USING INDEX 子句的 REPACK。更多细节参见那里。
要对表执行聚簇,必须在该表上具有 MAINTAIN 权限。
在 CLUSTER 执行期间,search_path 会被临时设置为 pg_catalog, pg_temp。
因为 CLUSTER 会记住哪些索引已被设为聚簇索引, 你可以第一次先手工聚簇需要聚簇的表,然后设置一个定期运行的维护脚 本,执行不带任何参数的 CLUSTER,这样这些表就会 被周期性地重新聚簇。
每个运行 CLUSTER 的后端都会在 pg_stat_progress_cluster 视图中报告其进度。 有关详细信息,请参见 Section 27.4.5。
对分区表进行聚簇时,会使用指定分区索引在各分区上的对应分区索引来 聚簇每个分区。对分区表执行聚簇时,索引不可省略。 对分区表执行 CLUSTER 不能在事务块内进行。
按照索引 employees_ind 对表 employees 进行聚簇:
CLUSTER employees USING employees_ind;
使用之前用过的同一个索引对 employees 表进行聚簇:
CLUSTER employees;
对数据库中此前已聚簇过的所有表执行聚簇:
CLUSTER;
SQL 标准中没有 CLUSTER 语句。
以下语法在 PostgreSQL 17 之前使用,当前仍受支持:
CLUSTER [ VERBOSE ] [table_name[ USINGindex_name] ]
以下语法在 PostgreSQL 8.3 之前使用,当前仍受支持:
CLUSTERindex_nameONtable_name