我在postgres中注意到当我们创建一个表时,它似乎会自动在PRIMARY KEY CONSTRAINT上创建一个btree索引。查看CONSTRAINT的属性,看起来它不是聚集的。我如何对其进行聚类,是否应该对其进行聚类?
答案 0 :(得分:2)
您必须使用CLUSTER
命令:
CLUSTER stone.unitloaddetail USING pk10;
请记住,这会重写表格并在此期间阻止其他人使用。
此外,修改表数据时不会保留群集,因此如果要保持表群集,则必须安排定期CLUSTER
运行。
答案 1 :(得分:0)
解决“你应该”部分,它取决于查询需要访问具有相邻聚类键值的多行的可能性。
对于具有合成主键的表,在外键列上进行聚类可能更有意义。
想象一下,您有一张桌子或一些产品。您是否更有可能要求多种产品:
如果它可以解决您为其中一个特定情况提高系统性能的问题,那么您应该考虑使用这一列进行聚类。
如果这样做不能解决问题,那么就不要这样做。