【发布时间】:2017-10-18 14:42:09
【问题描述】:
我在 postgres 中注意到,当我们创建一个表时,它似乎会自动在 PRIMARY KEY CONSTRAINT 上创建一个 btree 索引。查看 CONSTRAINT 的属性,它似乎没有聚集。我如何集群它,我应该集群它吗?
【问题讨论】:
标签: postgresql
我在 postgres 中注意到,当我们创建一个表时,它似乎会自动在 PRIMARY KEY CONSTRAINT 上创建一个 btree 索引。查看 CONSTRAINT 的属性,它似乎没有聚集。我如何集群它,我应该集群它吗?
【问题讨论】:
标签: postgresql
你必须使用CLUSTER 命令:
CLUSTER stone.unitloaddetail USING pk10;
请记住,这会在此期间重写表并阻止其他人使用。
此外,修改表数据时不会维护集群,因此如果要保持表集群,则必须安排定期运行 CLUSTER。
【讨论】:
解决“应该”部分,这取决于查询需要访问具有集群键相邻值的多行的可能性。
对于具有合成主键的表,在外键列上进行聚类可能更有意义。
假设您有一张桌子或产品。您是否更有可能要求具有以下特性的多种产品:
如果在其中一种特殊情况下提高系统性能可以解决问题,那么这就是您应该考虑聚类的列。
如果这样做不能解决问题,那就不要这样做。
【讨论】:
JOINs 中使用。从我收集到的。将 Laurenz Albe 提供的代码用于 CLUSTER 主键似乎是个好主意。让我知道你的想法