9 需要知道PostgreSQL如何排序磁盘上的记录。在这种情况下,我想利用docs中所述的索引组合,据我所知,它使用位图来获取匹配的行并根据其物理位置返回它们。该表已通过其主键进行了聚类。 据我了解,PostgreSQL在聚类完成后不会自动继续进行聚类(尽管它确实记得它是根据某个索引进行聚类的)。现在,由于这是主键,所以我想知道物理存储顺序是否符合该顺序(如果为true,我想利用它来进行特定查询)。 总之,PostgreSQL如何排序其新记录,尤其是在集群之后? 非常感谢! postgresql database-design index clustered-index physical-design — 胡安·卡洛斯·科托 source
9 postgresql中的行没有固定的顺序。记录不仅放置在有可用空间的地方,而且记录也可以移动。这是因为更新行时,将在新位置创建该行的新版本,而旧版本将继续保留在其旧位置中,直到被真空删除为止。 CLUSTER操作对所有行进行排序,但实际上并不影响postgresql添加行的方式。因此,数据将不会保持排序。但是postgresql保留统计信息,其中包括表中各行的顺序与该列的排序顺序之间各列的相关性。因此,即使在集群操作后添加了某些行(或已通过更新将其移动了),计划者仍可以根据统计信息优化其计划,该统计信息告诉该表仍是大部分排序的表。 — 埃尔克 source