Clustering on an index

PostgreSQL supports clustering a table using an index. CLUSTER is used to do that. What does it do? It reorganizes the table based on the index. Why do we need it? It can greatly increase performance when you query a range of index values or a single index value with multiple entries because the queried data is in one place on the disk.

The syntax is as follows:

CLUSTER [VERBOSE] table_name [ USING index_name ]

Here's an example of how to create a cluster and how it improves the performance:

CREATE TABLE table_cluster(
  id integer,
name varchar);
INSERT INTO table_cluster VALUES(generate_series(1,10000000), 'test_name'||generate_series(1,10000000));
CREATE INDEX table_cluster_idx ON table_cluster(id);

Query the table in such ...

Get PostgreSQL Development Essentials now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.