CLUSTER

Name

CLUSTER -- Provides the backend server with clustering information about a table.

Synopsis

CLUSTER indexname ON tablename

Parameters

indexname

The name of the index to use in clustering.

tablename

The name of the table you wish to cluster.

Results

CLUSTER

The message returned when a table is successfully clustered.

ERROR: CLUSTER: "indexname" is not an index for table "tablename"

The error returned if you attempt to cluster an index indexname which is not placed on the specified table (tablename).

ERROR: Index "indexname" does not exist

The error returned if the specified index (indexname) cannot be found in the connected database.

ERROR: Relation "tablename" does not exist

The error returned if the specified table (tablename) cannot be found in the connected database.

ERROR: Relation "child_table" inherits from "tablename"

The error returned if the specified table (tablename) is inherited by another table (child_table).

Description

Use the CLUSTER command to cluster a table on a specific index. The table (identified by the tablename parameter) must already, exist and the index (identified by the indexname parameter) must exist, and be placed on the table.

During clustering, a table is reordered for performance in an arrangement based on the specified index. A cluster is a one-time operation upon a table; to recluster a table, you must execute the command again.

Warning

When a cluster is created, the rows of the table are actually copied to a temporary table according to an order derived from the specified index. That temporary table is then renamed to the original table name. Because of this, all permissions and other indices are lost when clustering is performed.

Examples

The following example clusters the subjects table on the basis of its subjects_pkey index:

booktown=# CLUSTER subjects_ pkey ON subjects;
CLUSTER