如何在postgres

时间:2017-10-18 14:42:09

标签: postgresql

我在postgres中注意到当我们创建一个表时,它似乎会自动在PRIMARY KEY CONSTRAINT上创建一个btree索引。查看CONSTRAINT的属性,看起来它不是聚集的。我如何对其进行聚类,是否应该对其进行聚类?enter image description here

2 个答案:

答案 0 :(得分:2)

您必须使用CLUSTER命令:

CLUSTER stone.unitloaddetail USING pk10;

请记住,这会重写表格并在此期间阻止其他人使用。

此外,修改表数据时不会保留群集,因此如果要保持表群集,则必须安排定期CLUSTER运行。

答案 1 :(得分:0)

解决“你应该”部分,它取决于查询需要访问具有相邻聚类键值的多行的可能性。

对于具有合成主键的表,在外键列上进行聚类可能更有意义。

想象一下,您有一张桌子或一些产品。您是否更有可能要求多种产品:

  1. 连续product_id?
  2. 相同的location_id?
  3. 相同的type_id?
  4. 相同的manufacturer_id?
  5. 如果它可以解决您为其中一个特定情况提高系统性能的问题,那么您应该考虑使用这一列进行聚类。

    如果这样做不能解决问题,那么就不要这样做。