PostgreSQL 的 CLUSTER 与 SQL 服务器中的聚簇索引有何不同?

How does PostgreSQL's CLUSTER differ from a clustered index in SQL Server?

claim that there is no concept of a clustered index in PostgreSQL. However, the PostgreSQL documentation 等很多帖子都包含类似内容。一些人声称它类似于 SQL 服务器中的聚集索引。

你知道这两者之间的确切区别是什么吗?

一个聚簇索引组织的索引table是一种数据结构,其中所有table数据都是按索引顺序组织,通常通过在 B 树结构中组织 table。

一旦 table 被组织成这样,所有未来的数据修改都会自动维护顺序。

PostgreSQL 没有这样的集群索引。 CLUSTER 命令所做的是按照索引的顺序重写 table,但是 table 仍然是一个基本无序的 heap 数据,所以未来的数据修改将不会保持该索引顺序。

如果要在面对 table.

的数据修改时保持近似的索引顺序,则必须定期 CLUSTER PostgreSQL table

PostgreSQL 中的集群可以提高性能,因为在索引扫描期间找到的元组将在堆中靠在一起 table,这可以将对堆的随机访问转变为更快的顺序访问。